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