UNPKG

@duongtrungnguyen/nestro

Version:
81 lines 3.03 kB
var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __decorateClass = (decorators, target, key, kind) => { var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target; for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result; if (kind && result) __defProp(target, key, result); return result; }; import { Module } from "@nestjs/common"; import { GatewayConfigBuilder } from "./config-builder"; import { GatewayController } from "./controllers"; import { isClass } from "../../common"; let GatewayModule = class { /** * Creates a builder for configuring proxy routes and middlewares. * * @returns A new GatewayConfigBuilder instance. */ static builder() { return new GatewayConfigBuilder(); } /** * Registers and configures the GatewayModule dynamically. * * This method accepts either a class type implementing `IGatewayConfig` or a `GatewayRoutingConfigFunction`. * If a configuration function is provided, it is invoked with a `GatewayConfigBuilder` instance to produce * a `DynamicModule` or a `Promise<DynamicModule>`. If a class type is provided, an instance is created and * its `build` method is called with the builder. * * @param config - A class type implementing `IGatewayConfig` or a configuration function (`GatewayRoutingConfigFunction`) * that receives a `GatewayConfigBuilder` and returns a `DynamicModule` or a `Promise<DynamicModule>`. * @returns A `DynamicModule` or a `Promise<DynamicModule>` representing the configured gateway module. */ static register(config) { const builder = new GatewayConfigBuilder(); if (!isClass(config)) { return config(builder); } const instance = new config(); return instance.build(builder); } configure(consumer) { if (GatewayModule.globalMiddlewares.length) { consumer.apply(...GatewayModule.globalMiddlewares).forRoutes(GatewayController); } GatewayModule.routes.forEach((route) => { if (!route.middlewares?.length) return; const middlewares = []; const excludes = []; route.middlewares.forEach((hook) => { if (typeof hook === "function") { middlewares.push(hook); } else { middlewares.push(hook.instance); if (hook.excludes?.length) { excludes.push(...hook.excludes); } } }); if (middlewares.length) { const applied = consumer.apply(...middlewares); if (excludes.length) { applied.exclude(...excludes).forRoutes(route.route); } else { applied.forRoutes(route.route); } } }); } }; GatewayModule.routes = []; GatewayModule.globalMiddlewares = []; GatewayModule = __decorateClass([ Module({}) ], GatewayModule); export { GatewayModule }; //# sourceMappingURL=gateway.module.js.map