UNPKG

confinode

Version:

Node application configuration reader

40 lines 1.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const ConfinodeError_1 = require("../../ConfinodeError"); const ConfigDescription_1 = require("../ConfigDescription"); /** * Description of a conditional configuration. */ class ConditionalDescription { /** * Create a conditional configuration description. * * @param predicate - The predicate to test the value against. * @param ifDescription - The description to use if predicate is true. * @param elseDescription - The description to use if predicate is false. */ constructor(predicate, ifDescription, elseDescription) { this.predicate = predicate; this.ifDescription = ifDescription; this.elseDescription = elseDescription; } parse(data, context) { const { parent, ...inheritableContext } = context; if (data !== undefined && data !== null) { return this.predicate(data) ? ConfigDescription_1.asDescription(this.ifDescription).parse(data, inheritableContext) : ConfigDescription_1.asDescription(this.elseDescription).parse(data, inheritableContext); } else if (data === undefined && parent) { return parent; } else if (!context.final) { return undefined; } else { throw new ConfinodeError_1.default('missingMandatory', context.keyName); } } } exports.default = ConditionalDescription; //# sourceMappingURL=ConditionalDescription.js.map