@diullei/codeguardian
Version:
Open-source developer tool to validate and enforce architectural rules, especially for AI-generated code
56 lines • 2.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AnyOfRule = void 0;
const core_1 = require("../core");
class AnyOfRule extends core_1.CombinatorRule {
constructor(id, rules) {
super(id, rules);
}
async evaluate(context) {
const allViolations = [];
for (const rule of this.rules) {
let passed;
let violations = [];
if (rule instanceof core_1.AssertionRule && context.currentItem !== undefined) {
try {
const assertionResult = await rule.assertWithDetails(context.currentItem, context);
passed = assertionResult.passed;
if (!passed) {
violations = [
{
message: assertionResult.message || `Assertion '${rule.id}' failed`,
severity: 'error',
context: assertionResult.context,
},
];
}
}
catch (error) {
passed = false;
violations = [
{
message: `Assertion '${rule.id}' error: ${error instanceof Error ? error.message : String(error)}`,
severity: 'error',
},
];
}
}
else {
const result = await rule.evaluate(context);
passed = result.passed;
violations = result.violations || [];
}
if (passed) {
return { passed: true };
}
allViolations.push(...violations);
}
return {
passed: false,
message: 'None of the rules passed',
violations: allViolations,
};
}
}
exports.AnyOfRule = AnyOfRule;
//# sourceMappingURL=AnyOfRule.js.map