Merge pull request #704 from murgatroid99/grpc-js_loadPackageDefinition_fix

grpc-js: Fix handling of non-service objects in package definitions
This commit is contained in:
Michael Lumish 2019-01-15 17:49:54 -08:00 committed by GitHub
commit 483a1b4d54
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 21 additions and 3 deletions

View File

@ -21,7 +21,15 @@ export interface ServiceDefinition {
[index: string]: MethodDefinition<object, object>; [index: string]: MethodDefinition<object, object>;
} }
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 * Map with short names for each of the requester maker functions. Used in
@ -119,9 +127,15 @@ function partial(
} }
export type GrpcObject = { 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. * Load a gRPC package definition as a gRPC object hierarchy.
* @param packageDef The package definition object. * @param packageDef The package definition object.
@ -142,7 +156,11 @@ export function loadPackageDefinition(packageDef: PackageDefinition):
} }
current = current[packageName] as GrpcObject; current = current[packageName] as GrpcObject;
} }
current[serviceName] = makeClientConstructor(service, serviceName, {}); if (isProtobufTypeDefinition(service)) {
current[serviceName] = service;
} else {
current[serviceName] = makeClientConstructor(service, serviceName, {});
}
} }
} }
return result; return result;