@difizen/mana-core
Version:
53 lines • 2.85 kB
TypeScript
import type { MaybePromise } from '@difizen/mana-common';
import { DisposableCollection } from '@difizen/mana-common';
import type { Contribution } from '@difizen/mana-syringe';
import { Syringe } from '@difizen/mana-syringe';
import { ApplicationContribution } from '../application/index';
import type { ConfigurationNode } from './configuration-protocol';
import type { ConfigurationStorage } from './configuration-storage';
import { SchemaValidator } from './validation';
export declare const ConfigurationContribution: Syringe.DefinedToken;
export interface ConfigurationContribution {
registerConfiguration?: () => MaybePromise<ConfigurationNode<any>>;
registerConfigurations?: () => MaybePromise<ConfigurationNode<any>[]>;
deregisterConfigurations?: () => MaybePromise<ConfigurationNode<any>[]>;
}
export declare class ConfigurationRegistry implements ApplicationContribution {
protected readonly schemaValidator: SchemaValidator;
protected providers: Contribution.Provider<ConfigurationContribution>;
protected toDispose: DisposableCollection;
protected defaultStorage: ConfigurationStorage;
protected configurationNodes: ConfigurationNode<unknown>[];
protected scopes: Map<string, ConfigurationStorage>;
constructor(schemaValidator: SchemaValidator, providers: Contribution.Provider<ConfigurationContribution>);
onStart(): Promise<void>;
protected setupConfiguration(): Promise<void>;
getStorage(configuration: ConfigurationNode<any>): ConfigurationStorage;
hasConfiguration(configuration: ConfigurationNode<any>): boolean;
findConfiguration<T>(id: string): ConfigurationNode<T> | undefined;
/**
* Register a configuration to the registry.
*/
registerConfiguration(configuration: ConfigurationNode<any>): void;
/**
* Register multiple configurations to the registry.
*/
registerConfigurations(configurations: ConfigurationNode<any>[]): void;
/**
* Deregister multiple configurations from the registry.
*/
deregisterConfigurations(configurations: ConfigurationNode<any>[]): void;
deregisterConfiguration(configuration: ConfigurationNode<any>): void;
getConfigurationsByScope(storage: ConfigurationStorage): ConfigurationNode<unknown>[] | undefined;
getConfigurationsByStorage(storage: ConfigurationStorage): ConfigurationNode<unknown>[] | undefined;
getStorages(): ConfigurationStorage[];
/**
* 添加scope,已包含错误处理
*/
addStorage(scope: ConfigurationStorage): void;
getConfigurationByNamespace(namespace: string[], isFullMatch?: boolean): ConfigurationNode<unknown>[];
getNamespace(node: ConfigurationNode<any>): string[];
getRootNamespaces(): string[];
getChildNamespaces(namespace: string[]): string[][];
}
//# sourceMappingURL=configuration-registry.d.ts.map