@diullei/codeguardian
Version:
Open-source developer tool to validate and enforce architectural rules, especially for AI-generated code
41 lines • 1.75 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ForEachBuilder = exports.NoneOfBuilder = exports.AnyOfBuilder = exports.AllOfBuilder = void 0;
const combinators_1 = require("../../combinators");
const core_1 = require("../../core");
class AllOfBuilder {
build(config, factory) {
const rules = (config.rules || []).map((ruleConfig) => factory.create(ruleConfig));
return new combinators_1.AllOfRule(config.id || 'all_of', rules);
}
}
exports.AllOfBuilder = AllOfBuilder;
class AnyOfBuilder {
build(config, factory) {
const rules = (config.rules || []).map((ruleConfig) => factory.create(ruleConfig));
return new combinators_1.AnyOfRule(config.id || 'any_of', rules);
}
}
exports.AnyOfBuilder = AnyOfBuilder;
class NoneOfBuilder {
build(config, factory) {
const rules = (config.rules || []).map((ruleConfig) => factory.create(ruleConfig));
return new combinators_1.NoneOfRule(config.id || 'none_of', rules);
}
}
exports.NoneOfBuilder = NoneOfBuilder;
class ForEachBuilder {
build(config, factory) {
const selector = factory.create(config.select);
const assertion = factory.create(config.assert);
if (!(selector instanceof core_1.SelectorRule)) {
throw new Error('ForEach rule requires a selector rule');
}
if (!(assertion instanceof core_1.AssertionRule || assertion instanceof core_1.CombinatorRule)) {
throw new Error('ForEach rule requires an assertion or combinator rule');
}
return new combinators_1.ForEachRule(config.id || 'for_each', selector, assertion);
}
}
exports.ForEachBuilder = ForEachBuilder;
//# sourceMappingURL=CombinatorBuilders.js.map