Merge pull request #705 from murgatroid99/grpc-native_loadPackageDefinition_fix

grpc native: Fix handling of non-service objects in package definitions
This commit is contained in:
Michael Lumish 2019-01-15 17:48:20 -08:00 committed by GitHub
commit 36d638b408
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 25 additions and 3 deletions

View File

@ -259,11 +259,20 @@ declare module "grpc" {
readonly [I in keyof ImplementationType]: MethodDefinition<any, any>; readonly [I in keyof ImplementationType]: MethodDefinition<any, any>;
} }
/**
* An object that defines a protobuf type
*/
export interface ProtobufTypeDefinition {
format: string;
type: object;
fileDescriptorProtos: Buffer[];
}
/** /**
* An object that defines a package containing multiple services * An object that defines a package containing multiple services
*/ */
export type PackageDefinition = { export type PackageDefinition = {
readonly [fullyQualifiedName: string]: ServiceDefinition<any>; readonly [fullyQualifiedName: string]: ServiceDefinition<any> | ProtobufTypeDefinition;
} }
/** /**

View File

@ -169,8 +169,12 @@ exports.loadPackageDefinition = function loadPackageDefintion(packageDef) {
} }
current = current[packageName]; current = current[packageName];
} }
if (service.hasOwnProperty('format')) {
current[serviceName] = service;
} else {
current[serviceName] = client.makeClientConstructor(service, serviceName, {}); current[serviceName] = client.makeClientConstructor(service, serviceName, {});
} }
}
return result; return result;
}; };

View File

@ -317,9 +317,18 @@ exports.zipObject = function(props, values) {
* @typedef {Object.<string, grpc~MethodDefinition>} grpc~ServiceDefinition * @typedef {Object.<string, grpc~MethodDefinition>} grpc~ServiceDefinition
*/ */
/**
* An object that defines a protobuf type
* @typedef {object} grpc~ProtobufTypeDefinition
* @param {string} format The format of the type definition object
* @param {*} type The type definition object
* @param {Buffer[]} fileDescriptorProtos Binary protobuf file
* descriptors for all files loaded to construct this type
*/
/** /**
* An object that defines a package hierarchy with multiple services * An object that defines a package hierarchy with multiple services
* @typedef {Object.<string, grpc~ServiceDefinition>} grpc~PackageDefinition * @typedef {Object.<string, grpc~ServiceDefinition|grpc~ProtobufTypeDefinition>} grpc~PackageDefinition
*/ */
/** /**