@syntropysoft/praetorian
Version:
Praetorian CLI – A universal multi-environment configuration validator for DevSecOps teams. Validate, compare, and secure YAML/ENV files with ease.
52 lines • 1.87 kB
JavaScript
;
/**
* ValidationService - Single Responsibility: Execute validation logic
*
* This service handles all validation operations:
* - Creating validation functions
* - Executing validation rules
* - Managing validation context
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.ValidationService = void 0;
const EqualityRule_1 = require("../../domain/rules/EqualityRule");
class ValidationService {
/**
* Create validation function (pure function)
*/
createValidationFunction(options) {
// Guard clause: validate options
if (!options || typeof options !== 'object') {
throw new Error('Invalid validation options provided');
}
return async (files) => {
// Guard clause: validate files
if (!Array.isArray(files)) {
throw new Error('Files must be an array');
}
const equalityRule = new EqualityRule_1.EqualityRule();
const context = {
strict: options.strict ?? false,
ignoreKeys: options.ignore_keys ?? [],
requiredKeys: options.required_keys ?? []
};
return await equalityRule.execute(files, context);
};
}
/**
* Execute validation with guard clauses
*/
async executeValidation(files, options) {
// Guard clause: validate inputs
if (!Array.isArray(files)) {
throw new Error('Files must be an array');
}
if (!options || typeof options !== 'object') {
throw new Error('Invalid validation options provided');
}
const validationFunction = this.createValidationFunction(options);
return await validationFunction(files);
}
}
exports.ValidationService = ValidationService;
//# sourceMappingURL=ValidationService.js.map