gnablib
Version:
A lean, zero dependency library to provide a useful base for your project.
16 lines (15 loc) • 839 B
TypeScript
/*! Copyright 2023-2024 the gnablib contributors MPL-1.1 */
export type ConfigValue = boolean | string | number;
export type ValueSetter = (value: ConfigValue) => void;
export interface IConfigEnvCollector {
importEnv(key: string, proc: (value: string | undefined, set: ValueSetter) => void): IConfigEnvCollector;
importAvailEnv(key: string, proc: (value: string, set: ValueSetter) => void): IConfigEnvCollector;
}
export interface IConfigOracle {
define(key: string, defaultValue: ConfigValue, guard?: boolean): IConfigEnvCollector;
set(key: string, value: ConfigValue, reason?: string): void;
getBool(key: string, def?: boolean): boolean;
getInvertedBool(key: string, def?: boolean): boolean;
getString(key: string, def?: string): string;
getValueReason(key: string): [ConfigValue, string] | undefined;
}