UNPKG

@altostra/core

Version:

Core library for shared types and logic

57 lines (56 loc) 2.21 kB
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; }