UNPKG

3.16 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_1 = require("@nestjs/core/guards");
6const injector_1 = require("@nestjs/core/injector/injector");
7const interceptors_1 = require("@nestjs/core/interceptors");
8const pipes_1 = require("@nestjs/core/pipes");
9const client_1 = require("./client");
10const container_1 = require("./container");
11const exception_filters_context_1 = require("./context/exception-filters-context");
12const rpc_context_creator_1 = require("./context/rpc-context-creator");
13const rpc_proxy_1 = require("./context/rpc-proxy");
14const listeners_controller_1 = require("./listeners-controller");
15class MicroservicesModule {
16 constructor() {
17 this.clientsContainer = new container_1.ClientsContainer();
18 }
19 register(container, graphInspector, config, options) {
20 this.appOptions = options;
21 const exceptionFiltersContext = new exception_filters_context_1.ExceptionFiltersContext(container, config);
22 const contextCreator = new rpc_context_creator_1.RpcContextCreator(new rpc_proxy_1.RpcProxy(), exceptionFiltersContext, new pipes_1.PipesContextCreator(container, config), new pipes_1.PipesConsumer(), new guards_1.GuardsContextCreator(container, config), new guards_1.GuardsConsumer(), new interceptors_1.InterceptorsContextCreator(container, config), new interceptors_1.InterceptorsConsumer());
23 const injector = new injector_1.Injector();
24 this.listenersController = new listeners_controller_1.ListenersController(this.clientsContainer, contextCreator, container, injector, client_1.ClientProxyFactory, exceptionFiltersContext, graphInspector);
25 }
26 setupListeners(container, server) {
27 if (!this.listenersController) {
28 throw new runtime_exception_1.RuntimeException();
29 }
30 const modules = container.getModules();
31 modules.forEach(({ controllers }, moduleRef) => this.bindListeners(controllers, server, moduleRef));
32 }
33 setupClients(container) {
34 if (!this.listenersController) {
35 throw new runtime_exception_1.RuntimeException();
36 }
37 if (this.appOptions?.preview) {
38 return;
39 }
40 const modules = container.getModules();
41 modules.forEach(({ controllers, providers }) => {
42 this.bindClients(controllers);
43 this.bindClients(providers);
44 });
45 }
46 bindListeners(controllers, server, moduleName) {
47 controllers.forEach(wrapper => this.listenersController.registerPatternHandlers(wrapper, server, moduleName));
48 }
49 bindClients(items) {
50 items.forEach(({ instance, isNotMetatype }) => {
51 !isNotMetatype &&
52 this.listenersController.assignClientsToProperties(instance);
53 });
54 }
55 async close() {
56 const clients = this.clientsContainer.getAllClients();
57 await Promise.all(clients.map(client => client.close()));
58 this.clientsContainer.clear();
59 }
60}
61exports.MicroservicesModule = MicroservicesModule;