@duongtrungnguyen/nestro
Version:
Service registry for Nest JS
102 lines • 4.08 kB
JavaScript
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
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;
};
var gateway_module_exports = {};
__export(gateway_module_exports, {
GatewayModule: () => GatewayModule
});
module.exports = __toCommonJS(gateway_module_exports);
var import_common = require("@nestjs/common");
var import_config_builder = require("./config-builder");
var import_controllers = require("./controllers");
var import_common2 = require("../../common");
let GatewayModule = class {
/**
* Creates a builder for configuring proxy routes and middlewares.
*
* @returns A new GatewayConfigBuilder instance.
*/
static builder() {
return new import_config_builder.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 import_config_builder.GatewayConfigBuilder();
if (!(0, import_common2.isClass)(config)) {
return config(builder);
}
const instance = new config();
return instance.build(builder);
}
configure(consumer) {
if (GatewayModule.globalMiddlewares.length) {
consumer.apply(...GatewayModule.globalMiddlewares).forRoutes(import_controllers.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([
(0, import_common.Module)({})
], GatewayModule);
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
GatewayModule
});
//# sourceMappingURL=gateway.module.js.map