UNPKG

@diullei/codeguardian

Version:

Open-source developer tool to validate and enforce architectural rules, especially for AI-generated code

66 lines 2.41 kB
"use strict"; 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