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