diff --git a/packages/nestjs/server/package.json b/packages/nestjs/server/package.json index 6053580..224df09 100644 --- a/packages/nestjs/server/package.json +++ b/packages/nestjs/server/package.json @@ -1,6 +1,6 @@ { "name": "@grpc.ts/nestjs-server", - "version": "1.0.1", + "version": "1.0.2", "license": "MIT", "directories": { "lib": "lib" @@ -38,7 +38,8 @@ }, "dependencies": { "@grpc.ts/core": "workspace:*", - "@nestjs/common": "^9.4.0" + "@nestjs/common": "^9.4.0", + "rxjs": "^7.8.0" }, "devDependencies": { "@grpc.ts/server-commons": "workspace:^" diff --git a/packages/nestjs/server/rollup.config.ts b/packages/nestjs/server/rollup.config.ts index f69901d..1a21e12 100644 --- a/packages/nestjs/server/rollup.config.ts +++ b/packages/nestjs/server/rollup.config.ts @@ -7,7 +7,7 @@ import typescript from '@rollup/plugin-typescript'; export default defineConfig({ input: 'src/index.ts', plugins: [json(), resolve(), commonjs(), typescript()], - external: ['@nestjs/common', '@grpc.ts/core'], + external: ['@nestjs/common', '@grpc.ts/core', 'rxjs'], output: [ { file: './lib/index.cjs', diff --git a/packages/nestjs/server/src/GrpcServer.ts b/packages/nestjs/server/src/GrpcServer.ts index e5690e5..77a86e9 100644 --- a/packages/nestjs/server/src/GrpcServer.ts +++ b/packages/nestjs/server/src/GrpcServer.ts @@ -1,4 +1,5 @@ import { Logger } from '@nestjs/common'; +import { lastValueFrom, isObservable } from 'rxjs'; import { createServers } from '@grpc.ts/server-commons'; import type { Metadata, ServerUnaryCall } from '@grpc.ts/core'; @@ -81,8 +82,14 @@ export class GrpcServer { server.addUnaryHandler( serviceName, rpcName, - (request, metadata, call) => { - return handleMessage(request, metadata, call, pattern); + async (request, metadata, call) => { + const message = await handleMessage(request, metadata, call, pattern); + + if (isObservable(message)) { + return lastValueFrom(message); + } + + return message; }, options, ); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0f9b26f..1016cc6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -276,6 +276,9 @@ importers: '@nestjs/common': specifier: ^9.4.0 version: 9.4.0(reflect-metadata@0.1.13)(rxjs@7.8.0) + rxjs: + specifier: ^7.8.0 + version: 7.8.0 devDependencies: '@grpc.ts/server-commons': specifier: workspace:^