@tsclean/core
Version:
Plugin for API Rest Full development, based on Clean Architecture, IoC and Dependency Injection.
52 lines • 7.08 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.MiddlewareBuilder = void 0;
const iterare_1 = require("iterare");
const utils_1 = require("./utils");
const utils_2 = require("../utils");
class MiddlewareBuilder {
constructor(routesMapper, httpAdapter) {
this.routesMapper = routesMapper;
this.httpAdapter = httpAdapter;
this.middlewareCollection = new Set();
}
apply(...middleware) {
return new MiddlewareBuilder.ConfigProxy(this, (0, utils_2.flatten)(middleware));
}
build() {
return [...this.middlewareCollection];
}
getHttpAdapter() {
return this.httpAdapter;
}
}
exports.MiddlewareBuilder = MiddlewareBuilder;
MiddlewareBuilder.ConfigProxy = class {
constructor(builder, middleware) {
this.builder = builder;
this.middleware = middleware;
this.excludedRoutes = [];
}
exclude(...routes) {
this.excludedRoutes = this.getRoutesFlatList(routes);
return this;
}
forRoutes(...routes) {
const { middlewareCollection } = this.builder;
const forRoutes = this.getRoutesFlatList(routes);
const configuration = {
middleware: (0, utils_1.filterMiddleware)(this.middleware, this.excludedRoutes, this.builder.getHttpAdapter()),
forRoutes,
};
middlewareCollection.add(configuration);
return this.builder;
}
getRoutesFlatList(routes) {
const { routesMapper } = this.builder;
return (0, iterare_1.iterate)(routes)
.map(route => routesMapper.mapRouteToRouteInfo(route))
.flatten()
.toArray();
}
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taWRkbGV3YXJlL2J1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBQWdDO0FBRWhDLG1DQUF5QztBQVN6QyxvQ0FBaUM7QUFFakMsTUFBYSxpQkFBaUI7SUFHMUIsWUFDcUIsWUFBMEIsRUFDMUIsV0FBdUI7UUFEdkIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFKM0IseUJBQW9CLEdBQUcsSUFBSSxHQUFHLEVBQW9DLENBQUM7SUFNcEYsQ0FBQztJQUVNLEtBQUssQ0FBQyxHQUFHLFVBQTZDO1FBQ3pELE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUEsZUFBTyxFQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVNLEtBQUs7UUFDUixPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU0sY0FBYztRQUNqQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDNUIsQ0FBQzs7QUFuQkwsOENBNERDO0FBdkMyQiw2QkFBVyxHQUFHO0lBR2xDLFlBQ3FCLE9BQTBCLEVBQzFCLFVBQTZDO1FBRDdDLFlBQU8sR0FBUCxPQUFPLENBQW1CO1FBQzFCLGVBQVUsR0FBVixVQUFVLENBQW1DO1FBSjFELG1CQUFjLEdBQWdCLEVBQUUsQ0FBQztJQU16QyxDQUFDO0lBRU0sT0FBTyxDQUFDLEdBQUcsTUFBaUM7UUFDL0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLFNBQVMsQ0FBQyxHQUFHLE1BQTZDO1FBQzdELE1BQU0sRUFBQyxvQkFBb0IsRUFBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFFNUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pELE1BQU0sYUFBYSxHQUFHO1lBQ2xCLFVBQVUsRUFBRSxJQUFBLHdCQUFnQixFQUN4QixJQUFJLENBQUMsVUFBVSxFQUNmLElBQUksQ0FBQyxjQUFjLEVBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQ2hDO1lBQ0QsU0FBUztTQUNaLENBQUM7UUFDRixvQkFBb0IsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDeEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxNQUE2QztRQUNuRSxNQUFNLEVBQUMsWUFBWSxFQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUVwQyxPQUFPLElBQUEsaUJBQU8sRUFBQyxNQUFNLENBQUM7YUFDakIsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3JELE9BQU8sRUFBRTthQUNULE9BQU8sRUFBRSxDQUFDO0lBQ25CLENBQUM7Q0FDSixBQXRDa0MsQ0FzQ2pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpdGVyYXRlfSBmcm9tICdpdGVyYXJlJztcbmltcG9ydCB7Um91dGVzTWFwcGVyfSBmcm9tICcuL3JvdXRlcy1tYXBwZXInO1xuaW1wb3J0IHtmaWx0ZXJNaWRkbGV3YXJlfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7XG4gICAgSHR0cFNlcnZlcixcbiAgICBNaWRkbGV3YXJlQ29uc3VtZXJJbnRlcmZhY2UsXG4gICAgVHlwZSxcbiAgICBNaWRkbGV3YXJlQ29uZmlnUHJveHlJbnRlcmZhY2UsXG4gICAgTWlkZGxld2FyZUNvbmZpZ3VyYXRpb25JbnRlcmZhY2UsXG4gICAgUm91dGVJbmZvXG59IGZyb20gXCIuLi9jb250cmFjdHNcIjtcbmltcG9ydCB7ZmxhdHRlbn0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbmV4cG9ydCBjbGFzcyBNaWRkbGV3YXJlQnVpbGRlciBpbXBsZW1lbnRzIE1pZGRsZXdhcmVDb25zdW1lckludGVyZmFjZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtaWRkbGV3YXJlQ29sbGVjdGlvbiA9IG5ldyBTZXQ8TWlkZGxld2FyZUNvbmZpZ3VyYXRpb25JbnRlcmZhY2U+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXNNYXBwZXI6IFJvdXRlc01hcHBlcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBodHRwQWRhcHRlcjogSHR0cFNlcnZlcixcbiAgICApIHtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXBwbHkoLi4ubWlkZGxld2FyZTogQXJyYXk8VHlwZTxhbnk+IHwgRnVuY3Rpb24gfCBhbnk+KTogTWlkZGxld2FyZUNvbmZpZ1Byb3h5SW50ZXJmYWNlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBNaWRkbGV3YXJlQnVpbGRlci5Db25maWdQcm94eSh0aGlzLCBmbGF0dGVuKG1pZGRsZXdhcmUpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYnVpbGQoKTogTWlkZGxld2FyZUNvbmZpZ3VyYXRpb25JbnRlcmZhY2VbXSB7XG4gICAgICAgIHJldHVybiBbLi4udGhpcy5taWRkbGV3YXJlQ29sbGVjdGlvbl07XG4gICAgfVxuXG4gICAgcHVibGljIGdldEh0dHBBZGFwdGVyKCk6IEh0dHBTZXJ2ZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQWRhcHRlcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBDb25maWdQcm94eSA9IGNsYXNzIGltcGxlbWVudHMgTWlkZGxld2FyZUNvbmZpZ1Byb3h5SW50ZXJmYWNlIHtcbiAgICAgICAgcHJpdmF0ZSBleGNsdWRlZFJvdXRlczogUm91dGVJbmZvW10gPSBbXTtcblxuICAgICAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYnVpbGRlcjogTWlkZGxld2FyZUJ1aWxkZXIsXG4gICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG1pZGRsZXdhcmU6IEFycmF5PFR5cGU8YW55PiB8IEZ1bmN0aW9uIHwgYW55PixcbiAgICAgICAgKSB7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgZXhjbHVkZSguLi5yb3V0ZXM6IEFycmF5PHN0cmluZyB8IFJvdXRlSW5mbz4pOiBNaWRkbGV3YXJlQ29uZmlnUHJveHlJbnRlcmZhY2Uge1xuICAgICAgICAgICAgdGhpcy5leGNsdWRlZFJvdXRlcyA9IHRoaXMuZ2V0Um91dGVzRmxhdExpc3Qocm91dGVzKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIGZvclJvdXRlcyguLi5yb3V0ZXM6IEFycmF5PHN0cmluZyB8IFR5cGU8YW55PiB8IFJvdXRlSW5mbz4pOiBNaWRkbGV3YXJlQ29uc3VtZXJJbnRlcmZhY2Uge1xuICAgICAgICAgICAgY29uc3Qge21pZGRsZXdhcmVDb2xsZWN0aW9ufSA9IHRoaXMuYnVpbGRlcjtcblxuICAgICAgICAgICAgY29uc3QgZm9yUm91dGVzID0gdGhpcy5nZXRSb3V0ZXNGbGF0TGlzdChyb3V0ZXMpO1xuICAgICAgICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IHtcbiAgICAgICAgICAgICAgICBtaWRkbGV3YXJlOiBmaWx0ZXJNaWRkbGV3YXJlKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1pZGRsZXdhcmUsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXhjbHVkZWRSb3V0ZXMsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRlci5nZXRIdHRwQWRhcHRlcigpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZm9yUm91dGVzLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIG1pZGRsZXdhcmVDb2xsZWN0aW9uLmFkZChjb25maWd1cmF0aW9uKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJ1aWxkZXI7XG4gICAgICAgIH1cblxuICAgICAgICBwcml2YXRlIGdldFJvdXRlc0ZsYXRMaXN0KHJvdXRlczogQXJyYXk8c3RyaW5nIHwgVHlwZTxhbnk+IHwgUm91dGVJbmZvPik6IFJvdXRlSW5mb1tdIHtcbiAgICAgICAgICAgIGNvbnN0IHtyb3V0ZXNNYXBwZXJ9ID0gdGhpcy5idWlsZGVyO1xuXG4gICAgICAgICAgICByZXR1cm4gaXRlcmF0ZShyb3V0ZXMpXG4gICAgICAgICAgICAgICAgLm1hcChyb3V0ZSA9PiByb3V0ZXNNYXBwZXIubWFwUm91dGVUb1JvdXRlSW5mbyhyb3V0ZSkpXG4gICAgICAgICAgICAgICAgLmZsYXR0ZW4oKVxuICAgICAgICAgICAgICAgIC50b0FycmF5KCk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuIl19