confinode
Version:
Node application configuration reader
40 lines • 1.4 kB
JavaScript
;
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