UNPKG

confinode

Version:

Node application configuration reader

105 lines (104 loc) 4.73 kB
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>;