UNPKG

arch-unit-ts

Version:
49 lines 1.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MethodsTransformer = void 0; const Assert_1 = require("../../error/domain/Assert"); const TypeScriptMethod_1 = require("../core/domain/TypeScriptMethod"); class MethodsTransformer { description; predicateAggregator; constructor(description, predicateAggregator) { Assert_1.Assert.notNullOrUndefined('description', description); Assert_1.Assert.notNullOrUndefined('predicateAggregator', predicateAggregator); this.description = description; this.predicateAggregator = predicateAggregator; } addPredicate(predicate) { return new MethodsTransformer(this.description, this.predicateAggregator.add(predicate)); } switchModeAnd() { return new MethodsTransformer(this.description, this.predicateAggregator.thatANDs()); } switchModeOr() { return new MethodsTransformer(this.description, this.predicateAggregator.thatORs()); } transform(classes) { const allMethods = classes.flatMap(tsClass => { const sourceFile = tsClass.getSourceFile(); return sourceFile ? TypeScriptMethod_1.TypeScriptMethod.fromSourceFile(sourceFile, tsClass) : []; }); if (this.predicateAggregator.getPredicate().isEmpty()) { return allMethods; } return allMethods.filter(method => this.predicateAggregator .getPredicate() .map(predicate => predicate.test(method)) .orElseThrow()); } getDescription() { return this.description; } getFullDescription() { return (this.description + this.predicateAggregator .getPredicate() .map(predicate => ' ' + predicate.description) .orElse('')); } } exports.MethodsTransformer = MethodsTransformer; //# sourceMappingURL=MethodsTransformer.js.map