1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.MiddlewareBuilder = void 0;
|
4 | const dependencies_decorator_1 = require("@nestjs/common/decorators/core/dependencies.decorator");
|
5 | const iterare_1 = require("iterare");
|
6 | const utils_1 = require("./utils");
|
7 | class MiddlewareBuilder {
|
8 | constructor(routesMapper, httpAdapter) {
|
9 | this.routesMapper = routesMapper;
|
10 | this.httpAdapter = httpAdapter;
|
11 | this.middlewareCollection = new Set();
|
12 | }
|
13 | apply(...middleware) {
|
14 | return new MiddlewareBuilder.ConfigProxy(this, (0, dependencies_decorator_1.flatten)(middleware));
|
15 | }
|
16 | build() {
|
17 | return [...this.middlewareCollection];
|
18 | }
|
19 | getHttpAdapter() {
|
20 | return this.httpAdapter;
|
21 | }
|
22 | }
|
23 | exports.MiddlewareBuilder = MiddlewareBuilder;
|
24 | MiddlewareBuilder.ConfigProxy = class {
|
25 | constructor(builder, middleware) {
|
26 | this.builder = builder;
|
27 | this.middleware = middleware;
|
28 | this.excludedRoutes = [];
|
29 | }
|
30 | getExcludedRoutes() {
|
31 | return this.excludedRoutes;
|
32 | }
|
33 | exclude(...routes) {
|
34 | this.excludedRoutes = this.getRoutesFlatList(routes);
|
35 | return this;
|
36 | }
|
37 | forRoutes(...routes) {
|
38 | const { middlewareCollection } = this.builder;
|
39 | const forRoutes = this.getRoutesFlatList(routes);
|
40 | const configuration = {
|
41 | middleware: (0, utils_1.filterMiddleware)(this.middleware, this.excludedRoutes, this.builder.getHttpAdapter()),
|
42 | forRoutes,
|
43 | };
|
44 | middlewareCollection.add(configuration);
|
45 | return this.builder;
|
46 | }
|
47 | getRoutesFlatList(routes) {
|
48 | const { routesMapper } = this.builder;
|
49 | return (0, iterare_1.iterate)(routes)
|
50 | .map(route => routesMapper.mapRouteToRouteInfo(route))
|
51 | .flatten()
|
52 | .toArray();
|
53 | }
|
54 | };
|