1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.MicroservicesModule = void 0;
|
4 | const runtime_exception_1 = require("@nestjs/core/errors/exceptions/runtime.exception");
|
5 | const guards_consumer_1 = require("@nestjs/core/guards/guards-consumer");
|
6 | const guards_context_creator_1 = require("@nestjs/core/guards/guards-context-creator");
|
7 | const injector_1 = require("@nestjs/core/injector/injector");
|
8 | const interceptors_consumer_1 = require("@nestjs/core/interceptors/interceptors-consumer");
|
9 | const interceptors_context_creator_1 = require("@nestjs/core/interceptors/interceptors-context-creator");
|
10 | const pipes_consumer_1 = require("@nestjs/core/pipes/pipes-consumer");
|
11 | const pipes_context_creator_1 = require("@nestjs/core/pipes/pipes-context-creator");
|
12 | const client_1 = require("./client");
|
13 | const container_1 = require("./container");
|
14 | const exception_filters_context_1 = require("./context/exception-filters-context");
|
15 | const rpc_context_creator_1 = require("./context/rpc-context-creator");
|
16 | const rpc_proxy_1 = require("./context/rpc-proxy");
|
17 | const listeners_controller_1 = require("./listeners-controller");
|
18 | class MicroservicesModule {
|
19 | constructor() {
|
20 | this.clientsContainer = new container_1.ClientsContainer();
|
21 | }
|
22 | register(container, config) {
|
23 | const rpcProxy = new rpc_proxy_1.RpcProxy();
|
24 | const exceptionFiltersContext = new exception_filters_context_1.ExceptionFiltersContext(container, config);
|
25 | const contextCreator = new rpc_context_creator_1.RpcContextCreator(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());
|
26 | const injector = new injector_1.Injector();
|
27 | this.listenersController = new listeners_controller_1.ListenersController(this.clientsContainer, contextCreator, container, injector, client_1.ClientProxyFactory, exceptionFiltersContext);
|
28 | }
|
29 | setupListeners(container, server) {
|
30 | if (!this.listenersController) {
|
31 | throw new runtime_exception_1.RuntimeException();
|
32 | }
|
33 | const modules = container.getModules();
|
34 | modules.forEach(({ controllers }, moduleRef) => this.bindListeners(controllers, server, moduleRef));
|
35 | }
|
36 | setupClients(container) {
|
37 | if (!this.listenersController) {
|
38 | throw new runtime_exception_1.RuntimeException();
|
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 | }
|
61 | exports.MicroservicesModule = MicroservicesModule;
|