mirror of https://github.com/grpc/grpc-node.git
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:
commit
483a1b4d54
|
@ -21,7 +21,15 @@ export interface ServiceDefinition {
|
|||
[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
|
||||
|
@ -119,9 +127,15 @@ 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 +156,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;
|
||||
|
|
Loading…
Reference in New Issue