From e32fec18fec8dbaf132c4a2f017c4879843184b9 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Mon, 14 Jan 2019 17:03:03 -0800 Subject: [PATCH 1/2] grpc-js: Fix handling of non-service objects in package definitions --- packages/grpc-js/src/make-client.ts | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/packages/grpc-js/src/make-client.ts b/packages/grpc-js/src/make-client.ts index 3b03255f1..7fcc17d53 100644 --- a/packages/grpc-js/src/make-client.ts +++ b/packages/grpc-js/src/make-client.ts @@ -21,7 +21,13 @@ export interface ServiceDefinition { [index: string]: MethodDefinition; } -export interface PackageDefinition { [index: string]: ServiceDefinition; } +export interface ProtobufTypeDefinition { + format: string; + type: object; + fileDescriptorProtos: Buffer[]; +} + +export interface PackageDefinition { [index: string]: ServiceDefinition | ProtobufTypeDefinition; } /** * Map with short names for each of the requester maker functions. Used in @@ -119,9 +125,13 @@ function partial( } export type GrpcObject = { - [index: string]: GrpcObject|ServiceClientConstructor; + [index: string]: GrpcObject|ServiceClientConstructor|ProtobufTypeDefinition; }; +function isProtobufTypeDefinition(obj: ServiceDefinition | ProtobufTypeDefinition): obj is ProtobufTypeDefinition { + return 'format' in obj; +} + /** * Load a gRPC package definition as a gRPC object hierarchy. * @param packageDef The package definition object. @@ -142,7 +152,11 @@ export function loadPackageDefinition(packageDef: PackageDefinition): } current = current[packageName] as GrpcObject; } - current[serviceName] = makeClientConstructor(service, serviceName, {}); + if (isProtobufTypeDefinition(service)) { + current[serviceName] = service; + } else { + current[serviceName] = makeClientConstructor(service, serviceName, {}); + } } } return result; From 15f877aa45c7c9b7fb8d028b32d89e6a75da253a Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Mon, 14 Jan 2019 17:51:41 -0800 Subject: [PATCH 2/2] Fix lint errors --- packages/grpc-js/src/make-client.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/grpc-js/src/make-client.ts b/packages/grpc-js/src/make-client.ts index 7fcc17d53..df673aa78 100644 --- a/packages/grpc-js/src/make-client.ts +++ b/packages/grpc-js/src/make-client.ts @@ -27,7 +27,9 @@ export interface ProtobufTypeDefinition { fileDescriptorProtos: Buffer[]; } -export interface PackageDefinition { [index: string]: ServiceDefinition | ProtobufTypeDefinition; } +export interface PackageDefinition { + [index: string]: ServiceDefinition|ProtobufTypeDefinition; +} /** * Map with short names for each of the requester maker functions. Used in @@ -128,7 +130,9 @@ export type GrpcObject = { [index: string]: GrpcObject|ServiceClientConstructor|ProtobufTypeDefinition; }; -function isProtobufTypeDefinition(obj: ServiceDefinition | ProtobufTypeDefinition): obj is ProtobufTypeDefinition { +function isProtobufTypeDefinition( + obj: ServiceDefinition| + ProtobufTypeDefinition): obj is ProtobufTypeDefinition { return 'format' in obj; }