UNPKG

@russ-b/nestjs-common-tools

Version:
68 lines 3.29 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 _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.GrpcOptionsProvider = void 0; const common_1 = require("@nestjs/common"); const microservices_1 = require("@nestjs/microservices"); const reflection_1 = require("@grpc/reflection"); const node_fs_1 = require("node:fs"); const node_path_1 = require("node:path"); const package_definition_1 = require("../services/package-definition"); let GrpcOptionsProvider = class GrpcOptionsProvider { constructor(grpcPackageDefinitionService) { this.grpcPackageDefinitionService = grpcPackageDefinitionService; } getOptions(options = { usePackageDefinitionService: false, useReflectionService: true, protoDir: (0, node_path_1.join)(__dirname, '../../proto'), packageName: '', url: '0.0.0.0:50051', }) { const packageName = options.packageName; return { transport: microservices_1.Transport.GRPC, options: { loader: { longs: Number, arrays: true, objects: true, includeDirs: [options.protoDir], }, gracefulShutdown: true, url: options.url, package: packageName, protoPath: this.getProtoPath(packageName, options.protoDir), onLoadPackageDefinition: (pkg, server) => { if (options.usePackageDefinitionService) { this.grpcPackageDefinitionService.setPackageDefinition(packageName, pkg); } if (options.useReflectionService) { new reflection_1.ReflectionService(pkg).addToServer(server); } }, }, }; } getProtoPath(packageName, protoDir) { const fullPath = (0, node_path_1.join)(protoDir, packageName); return (0, node_fs_1.readdirSync)(fullPath) .filter((f) => f.endsWith('proto')) .map((f) => (0, node_path_1.join)(fullPath, f)); } }; exports.GrpcOptionsProvider = GrpcOptionsProvider; exports.GrpcOptionsProvider = GrpcOptionsProvider = __decorate([ (0, common_1.Injectable)(), __metadata("design:paramtypes", [typeof (_a = typeof package_definition_1.PackageDefinitionService !== "undefined" && package_definition_1.PackageDefinitionService) === "function" ? _a : Object]) ], GrpcOptionsProvider); //# sourceMappingURL=grpc-options.provider.js.map