UNPKG

confinode

Version:

Node application configuration reader

40 lines 1.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const ConfinodeError_1 = require("../../ConfinodeError"); const ConfinodeResult_1 = require("../../ConfinodeResult"); const ConfigDescription_1 = require("../ConfigDescription"); /** * Description of a default value. */ class DefaultValueDescription { /** * Create a default value description. * * @param description - The description to “protect” by a default value. * @param defaultValue - The value to use if description does not exist. */ constructor(description, defaultValue) { this.description = description; this.defaultValue = defaultValue; } parse(data, context) { const { keyName, parent, final } = context; if (data !== undefined && data !== null) { return ConfigDescription_1.asDescription(this.description).parse(data, context); } else if (data === undefined && parent) { return parent; } else if (!final) { return undefined; } else if (data === undefined) { return new ConfinodeResult_1.DirectResult(this.defaultValue); } else { throw new ConfinodeError_1.default('missingMandatory', keyName); } } } exports.default = DefaultValueDescription; //# sourceMappingURL=DefaultValueDescription.js.map