confinode
Version:
Node application configuration reader
160 lines • 5.98 kB
JavaScript
"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