arch-unit-ts
Version:
49 lines • 1.48 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PredicateAggregator = void 0;
const Optional_1 = require("../../../common/domain/Optional");
const Assert_1 = require("../../../error/domain/Assert");
class PredicateAggregator {
addMode;
predicate;
constructor(addMode, predicate) {
Assert_1.Assert.notNullOrUndefined('addMode', addMode);
this.addMode = addMode;
this.predicate = predicate;
}
static default() {
return new PredicateAggregator(AddMode.and(), Optional_1.Optional.empty());
}
getPredicate() {
return this.predicate;
}
add(other) {
return new PredicateAggregator(this.addMode, Optional_1.Optional.of(this.addMode.apply(this.predicate, other)));
}
thatANDs() {
return new PredicateAggregator(AddMode.and(), this.predicate);
}
thatORs() {
return new PredicateAggregator(AddMode.or(), this.predicate);
}
}
exports.PredicateAggregator = PredicateAggregator;
class AddMode {
static and() {
return new AndMode();
}
static or() {
return new OrMode();
}
}
class AndMode extends AddMode {
apply(first, other) {
return first.isPresent() ? first.orElseThrow().and(other) : other;
}
}
class OrMode extends AddMode {
apply(first, other) {
return first.isPresent() ? first.orElseThrow().or(other) : other;
}
}
//# sourceMappingURL=PredicateAggregator.js.map