Skip to content

Commit 8bce796

Browse files
Merge pull request nestjs#1271 from grin0c/another-proto-loader
feature(microservices): added option for proto-loader (grpc)
2 parents 6a54900 + be40001 commit 8bce796

4 files changed

Lines changed: 13 additions & 4 deletions

File tree

packages/microservices/client/client-grpc.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { Logger } from '@nestjs/common/services/logger.service';
22
import { loadPackage } from '@nestjs/common/utils/load-package.util';
33
import { isObject } from '@nestjs/common/utils/shared.utils';
44
import { Observable } from 'rxjs';
5-
import { GRPC_DEFAULT_URL } from '../constants';
5+
import { GRPC_DEFAULT_PROTO_LOADER, GRPC_DEFAULT_URL } from '../constants';
66
import { InvalidGrpcPackageException } from '../exceptions/errors/invalid-grpc-package.exception';
77
import { InvalidGrpcServiceException } from '../exceptions/errors/invalid-grpc-service.exception';
88
import { InvalidProtoDefinitionException } from '../exceptions/errors/invalid-proto-definition.exception';
@@ -24,9 +24,12 @@ export class ClientGrpcProxy extends ClientProxy implements ClientGrpc {
2424
this.url =
2525
this.getOptionsProp<GrpcOptions>(options, 'url') || GRPC_DEFAULT_URL;
2626

27+
const protoLoader =
28+
this.getOptionsProp<GrpcOptions>(options, 'protoLoader') || GRPC_DEFAULT_PROTO_LOADER;
29+
2730
grpcPackage = loadPackage('grpc', ClientGrpcProxy.name);
2831
grpcProtoLoaderPackage = loadPackage(
29-
'@grpc/proto-loader',
32+
protoLoader,
3033
ClientGrpcProxy.name,
3134
);
3235
this.grpcClient = this.createClient();

packages/microservices/constants.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,5 @@ export const RQM_DEFAULT_QUEUE = 'default';
2525
export const RQM_DEFAULT_PREFETCH_COUNT = 0;
2626
export const RQM_DEFAULT_IS_GLOBAL_PREFETCH_COUNT = false;
2727
export const RQM_DEFAULT_QUEUE_OPTIONS = {};
28+
29+
export const GRPC_DEFAULT_PROTO_LOADER = '@grpc/proto-loader';

packages/microservices/interfaces/microservice-configuration.interface.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ export interface GrpcOptions {
2424
credentials?: any;
2525
protoPath: string;
2626
package: string;
27+
protoLoader?: string;
2728
/** @deprecated */
2829
root?: string;
2930
loader?: {

packages/microservices/server/server-grpc.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { fromEvent } from 'rxjs';
22
import { takeUntil } from 'rxjs/operators';
3-
import { CANCEL_EVENT, GRPC_DEFAULT_URL } from '../constants';
3+
import { CANCEL_EVENT, GRPC_DEFAULT_PROTO_LOADER, GRPC_DEFAULT_URL } from '../constants';
44
import { InvalidGrpcPackageException } from '../exceptions/errors/invalid-grpc-package.exception';
55
import { InvalidProtoDefinitionException } from '../exceptions/errors/invalid-proto-definition.exception';
66
import { CustomTransportStrategy } from '../interfaces';
@@ -22,9 +22,12 @@ export class ServerGrpc extends Server implements CustomTransportStrategy {
2222
this.url =
2323
this.getOptionsProp<GrpcOptions>(options, 'url') || GRPC_DEFAULT_URL;
2424

25+
const protoLoader =
26+
this.getOptionsProp<GrpcOptions>(options, 'protoLoader') || GRPC_DEFAULT_PROTO_LOADER;
27+
2528
grpcPackage = this.loadPackage('grpc', ServerGrpc.name);
2629
grpcProtoLoaderPackage = this.loadPackage(
27-
'@grpc/proto-loader',
30+
protoLoader,
2831
ServerGrpc.name,
2932
);
3033
}

0 commit comments

Comments
 (0)