UNPKG

confinode

Version:

Node application configuration reader

160 lines 5.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const AnyDescription_1 = require("./AnyDescription"); const ArrayDescription_1 = require("./ArrayDescription"); const BooleanDescription_1 = require("./BooleanDescription"); const ChoiceDescription_1 = require("./ChoiceDescription"); const ConditionalDescription_1 = require("./ConditionalDescription"); const DefaultValueDescription_1 = require("./DefaultValueDescription"); const DictionaryDescription_1 = require("./DictionaryDescription"); const LiteralDescription_1 = require("./LiteralDescription"); const NumberDescription_1 = require("./NumberDescription"); const OptionalDescription_1 = require("./OptionalDescription"); const OverrideDescription_1 = require("./OverrideDescription"); const SingleOrArrayDescription_1 = require("./SingleOrArrayDescription"); const StringDescription_1 = require("./StringDescription"); /** * Describe an “any” item, useful for configuration parts that you actually don't want to describe. * * @returns The configuration description. */ function anyItem() { return new AnyDescription_1.default(); } exports.anyItem = anyItem; /** * 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. */ function array(description) { return new ArrayDescription_1.default(description); } exports.array = array; /** * 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. */ // eslint-disable-next-line no-shadow function booleanItem(defaultValue = false) { return new BooleanDescription_1.default(defaultValue); } exports.booleanItem = booleanItem; /** * 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. */ function choiceItem(choices, // eslint-disable-next-line no-shadow defaultValue) { return new ChoiceDescription_1.default(choices, defaultValue); } exports.choiceItem = choiceItem; /** * 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. */ function conditional(predicate, ifDescription, elseDescription) { return new ConditionalDescription_1.default(predicate, ifDescription, elseDescription); } exports.conditional = conditional; /** * 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. */ function defaultValue(description, value) { return new DefaultValueDescription_1.default(description, value); } exports.defaultValue = defaultValue; /** * 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. */ function dictionary(description) { return new DictionaryDescription_1.default(description); } exports.dictionary = dictionary; /** * 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. */ function literal(description) { return new LiteralDescription_1.default(description); } exports.literal = literal; /** * Describe a number item. * * @param defaultValue - The default value. * @returns The configuration description. */ // eslint-disable-next-line no-shadow function numberItem(defaultValue) { return new NumberDescription_1.default(defaultValue); } exports.numberItem = numberItem; /** * 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. */ function optional(description) { return new OptionalDescription_1.default(description); } exports.optional = optional; /** * 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. */ function override(description) { return new OverrideDescription_1.default(description); } exports.override = override; /** * 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. */ function singleOrArray(description) { return new SingleOrArrayDescription_1.default(description); } exports.singleOrArray = singleOrArray; /** * Describe a string item. * * @param defaultValue - The default value. * @returns The configuration description. */ // eslint-disable-next-line no-shadow function stringItem(defaultValue) { return new StringDescription_1.default(defaultValue); } exports.stringItem = stringItem; //# sourceMappingURL=helpers.js.map