kist
Version:
Lightweight Package Pipeline Processor with Plugin Architecture
45 lines • 1.56 kB
JavaScript
import { AbstractValidator } from "../abstract/AbstractValidator.js";
import { StageValidator } from "./StageValidator.js";
export class ConfigValidator extends AbstractValidator {
constructor() {
super();
this.stageValidator = new StageValidator();
this.logInfo("ConfigValidator initialized.");
}
validate(config) {
this.logInfo("Validating configuration.");
for (const key in config) {
if (Object.prototype.hasOwnProperty.call(config, key)) {
this.validateProperty(key, config[key]);
}
}
this.logInfo("Configuration validated successfully.");
}
validateProperty(key, value) {
switch (key) {
case "extends":
break;
case "stages":
if (Array.isArray(value)) {
this.validateStages(value);
}
else {
this.throwValidationError(key, value, "'stages' must be an array.");
}
break;
case "metadata":
case "options":
case "validateConfig":
break;
default:
this.throwValidationError(key, value, `Unknown or unsupported configuration property: "${String(key)}".`);
}
this.logValidationSuccess(key, value);
}
validateStages(stages) {
for (const stage of stages) {
this.stageValidator.validate(stage);
}
}
}
//# sourceMappingURL=ConfigValidator.js.map