confinode
Version:
Node application configuration reader
105 lines (104 loc) • 4.73 kB
TypeScript
import ConfigDescription, { ConfigDescriptionParameter } from './ConfigDescription';
import { ConfigDescriptionLiteral } from './LiteralDescription';
/**
* Describe an “any” item, useful for configuration parts that you actually don't want to describe.
*
* @returns The configuration description.
*/
export declare function anyItem(): ConfigDescription<any>;
/**
* Describe an array. The inner description is for each element of the array.
*
* @param description - The description to repeat for each array element.
* @returns The configuration description.
*/
export declare function array<T>(description: ConfigDescriptionParameter<T>): ConfigDescription<T[]>;
/**
* Describe a boolean item. This type of item is never mandatory because it is easy to give it a default
* value.
*
* @param defaultValue - The default value, false if not given.
* @returns The configuration description.
*/
export declare function booleanItem(defaultValue?: boolean): ConfigDescription<boolean>;
/**
* Describe a choice item, which allow user to choose between a finite set of choices.
*
* @param choices - The available choices.
* @param defaultValue - The default value.
* @returns The configuration description.
*/
export declare function choiceItem<T extends string | number>(choices: T[], defaultValue?: T): ConfigDescription<T>;
/**
* Describe a conditional configuration. If value matches a predicate, first description is used, otherwise,
* the second one is used.
*
* @param predicate - The predicate which will be tested against the value to parse.
* @param ifDescription - The description if predicate is true.
* @param elseDescription - The description if predicate is false.
* @returns The configuration description.
*/
export declare function conditional<I, E>(predicate: (value: unknown) => boolean, ifDescription: ConfigDescriptionParameter<I>, elseDescription: ConfigDescriptionParameter<E>): ConfigDescription<I | E>;
/**
* Describe a default value to be added to the given description. This is mostly useful for “non basic
* items”, because those items already have a default value in their definition.
*
* @param description - The description to which to add default value.
* @param value - The default value for if no value specified.
* @returns The configuration description.
*/
export declare function defaultValue<T>(description: ConfigDescriptionParameter<T>, value: T): ConfigDescription<T>;
/**
* Describe a dictionary, i.e. an object with strings as keys and whatever is described as values.
*
* @param description - The description of a dictionary value.
* @returns The configuration description.
*/
export declare function dictionary<T>(description: ConfigDescriptionParameter<T>): ConfigDescription<{
[key: string]: T;
}>;
/**
* Describe an object literal. Each key of the object can have a different configuration description.
*
* @param description - The description of each literal item.
* @returns The configuration description.
*/
export declare function literal<T extends object>(description: ConfigDescriptionLiteral<T>): ConfigDescription<T>;
/**
* Describe a number item.
*
* @param defaultValue - The default value.
* @returns The configuration description.
*/
export declare function numberItem(defaultValue?: number): ConfigDescription<number>;
/**
* Describe an optional element, i.e. if no value is provided to the element (or value is `undefined`), then
* the result will be `undefined`.
*
* @param description - The description to turn optional.
* @returns The configuration description.
*/
export declare function optional<T>(description: ConfigDescriptionParameter<T>): ConfigDescription<T | undefined>;
/**
* Describe an overridable element. In an overridable element, data taken from an extended configuration
* file will be discarded (and not merged) if a child also provides value for the item.
*
* @param description - The description of the item to override.
* @returns The configuration description.
*/
export declare function override<T>(description: ConfigDescriptionParameter<T>): ConfigDescription<T>;
/**
* Describe an array element. If there is only a single element to put in array, this description allow the
* user to give it directly without using an array definition.
*
* @param description - The description of the expected value.
* @returns The configuration description.
*/
export declare function singleOrArray<T>(description: ConfigDescriptionParameter<T>): ConfigDescription<T[]>;
/**
* Describe a string item.
*
* @param defaultValue - The default value.
* @returns The configuration description.
*/
export declare function stringItem(defaultValue?: string): ConfigDescription<string>;