UNPKG

arch-unit-ts

Version:
49 lines 1.48 kB
"use strict"; 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