@altostra/core
Version:
Core library for shared types and logic
57 lines (56 loc) • 2.21 kB
TypeScript
import type { Key } from "../../common/Types";
import type { ConfigurationKey } from "./Common";
import type { RawSettings } from "./Privates";
import { SETTINGS_OPTIONS } from "./Privates";
import { Settings } from "./Settings";
/**
* Settings manager options
*/
export interface SettingsOptions<T extends object> {
/**
* Provides configuration from a specified path
* @param path The path to return configuration from
* @returns A configuration
*/
settingsProvider(path: string): Promise<Partial<RawSettings<T>>>;
/**
*Stores configuration in the specified path
* @param path The path to return configuration from
* @param settings The settings to store in the provided path
*/
persistSettings(path: string, settings: Partial<RawSettings<T>>): Promise<void>;
}
/**
* A class that manages settings, with defaults, global config, and project configs
*/
export declare class SettingsManager<T extends object> {
private readonly _defaults;
readonly globalConfigPath: string;
/**
* Gets a settings object containing all settings defaults
*/
readonly defaults: Settings<T>;
readonly [SETTINGS_OPTIONS]: SettingsOptions<T>;
readonly _keys: Set<ConfigurationKey<T>>;
private _globalsAndOverridesP?;
/**
* Creates new SettingsManager instance
* @param _defaults An object containing all settings defaults
* @param globalConfigPath An optional path for the global configuration
* @param options Optional options for settings manager
*/
constructor(_defaults: T, globalConfigPath?: string, options?: Partial<SettingsOptions<T>>);
get keys(): Set<ConfigurationKey<T>>;
isOverriddenKey(namespace: string, key: Key): Promise<boolean>;
/**
* Gets a settings object for the global configuration
*/
getGlobalSettings(): Promise<Settings<T>>;
/**
* Gets a settings object for project configuration
* @param path An optional path to load the settings from (default to current working dir)
*/
getProjectSettings(path?: string): Promise<Settings<T>>;
isConfigurationKey(key: Key): key is ConfigurationKey<T>;
private _globalsAndOverrides;
}