UNPKG

@devgrid/netron-nest

Version:

NestJS integration module for @devgrid/netron, providing seamless distributed system capabilities with decorators, dependency injection, and automatic service discovery in NestJS applications.

71 lines 3.36 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; var NetronService_1; Object.defineProperty(exports, "__esModule", { value: true }); exports.NetronService = void 0; const netron_1 = require("@devgrid/netron"); const core_1 = require("@nestjs/core"); const common_1 = require("@nestjs/common"); const constants_1 = require("./constants"); const service_decorator_1 = require("./decorators/service.decorator"); let NetronService = NetronService_1 = class NetronService { constructor(options, discoveryService, reflector) { this.options = options; this.discoveryService = discoveryService; this.reflector = reflector; this.logger = new common_1.Logger(NetronService_1.name); this.netron = new netron_1.Netron(this.options); } async onApplicationBootstrap() { await this.netron.start(); this.registerDiscoveredServices(); } async onApplicationShutdown(signal) { this.logger.log(`Shutting down Netron (signal: ${signal})`); await this.netron.stop(); } registerDiscoveredServices() { const providers = this.discoveryService.getProviders(); for (const wrapper of providers) { const { instance, metatype } = wrapper; if (!instance || !metatype || typeof instance !== 'object') continue; if (!wrapper.isDependencyTreeStatic()) { this.logger.warn(`Service "${wrapper.name}" cannot be exposed because it is defined in a non-static provider.`); continue; } const qualifiedName = this.reflector.get(service_decorator_1.NETRON_SERVICE_METADATA, metatype); if (qualifiedName) { try { this.netron.peer.exposeService(instance); this.logger.log(`Service "${qualifiedName}" successfully exposed.`); } catch (error) { this.logger.error(`Error exposing service "${qualifiedName}": ${error.message}`); } } } } get instance() { return this.netron; } }; exports.NetronService = NetronService; exports.NetronService = NetronService = NetronService_1 = __decorate([ (0, common_1.Injectable)(), __param(0, (0, common_1.Inject)(constants_1.NETRON_OPTIONS)), __metadata("design:paramtypes", [Object, core_1.DiscoveryService, core_1.Reflector]) ], NetronService); //# sourceMappingURL=netron.service.js.map