UNPKG

3.44 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.MicroservicesModule = void 0;
4const runtime_exception_1 = require("@nestjs/core/errors/exceptions/runtime.exception");
5const guards_consumer_1 = require("@nestjs/core/guards/guards-consumer");
6const guards_context_creator_1 = require("@nestjs/core/guards/guards-context-creator");
7const injector_1 = require("@nestjs/core/injector/injector");
8const interceptors_consumer_1 = require("@nestjs/core/interceptors/interceptors-consumer");
9const interceptors_context_creator_1 = require("@nestjs/core/interceptors/interceptors-context-creator");
10const pipes_consumer_1 = require("@nestjs/core/pipes/pipes-consumer");
11const pipes_context_creator_1 = require("@nestjs/core/pipes/pipes-context-creator");
12const client_1 = require("./client");
13const container_1 = require("./container");
14const exception_filters_context_1 = require("./context/exception-filters-context");
15const rpc_context_creator_1 = require("./context/rpc-context-creator");
16const rpc_proxy_1 = require("./context/rpc-proxy");
17const listeners_controller_1 = require("./listeners-controller");
18class MicroservicesModule {
19 constructor() {
20 this.clientsContainer = new container_1.ClientsContainer();
21 }
22 register(container, config) {
23 const exceptionFiltersContext = new exception_filters_context_1.ExceptionFiltersContext(container, config);
24 const contextCreator = new rpc_context_creator_1.RpcContextCreator(new rpc_proxy_1.RpcProxy(), exceptionFiltersContext, new pipes_context_creator_1.PipesContextCreator(container, config), new pipes_consumer_1.PipesConsumer(), new guards_context_creator_1.GuardsContextCreator(container, config), new guards_consumer_1.GuardsConsumer(), new interceptors_context_creator_1.InterceptorsContextCreator(container, config), new interceptors_consumer_1.InterceptorsConsumer());
25 const injector = new injector_1.Injector();
26 this.listenersController = new listeners_controller_1.ListenersController(this.clientsContainer, contextCreator, container, injector, client_1.ClientProxyFactory, exceptionFiltersContext);
27 }
28 setupListeners(container, server) {
29 if (!this.listenersController) {
30 throw new runtime_exception_1.RuntimeException();
31 }
32 const modules = container.getModules();
33 modules.forEach(({ controllers }, moduleRef) => this.bindListeners(controllers, server, moduleRef));
34 }
35 setupClients(container) {
36 if (!this.listenersController) {
37 throw new runtime_exception_1.RuntimeException();
38 }
39 const modules = container.getModules();
40 modules.forEach(({ controllers, providers }) => {
41 this.bindClients(controllers);
42 this.bindClients(providers);
43 });
44 }
45 bindListeners(controllers, server, moduleName) {
46 controllers.forEach(wrapper => this.listenersController.registerPatternHandlers(wrapper, server, moduleName));
47 }
48 bindClients(items) {
49 items.forEach(({ instance, isNotMetatype }) => {
50 !isNotMetatype &&
51 this.listenersController.assignClientsToProperties(instance);
52 });
53 }
54 async close() {
55 const clients = this.clientsContainer.getAllClients();
56 await Promise.all(clients.map(client => client.close()));
57 this.clientsContainer.clear();
58 }
59}
60exports.MicroservicesModule = MicroservicesModule;