Add package definition loader function to native package

This commit is contained in:
murgatroid99 2018-02-21 16:12:02 -08:00
parent 08b98238cf
commit bda109e655
2 changed files with 28 additions and 0 deletions

View File

@ -146,6 +146,29 @@ exports.load = function load(filename, format, options) {
return loadObject(builder.ns, options);
};
/**
* Load a gRPC package definition as a gRPC object hierarchy
* @param packageDef grpc~PackageDefinition The package definition object
* @return {Object<string, *>} The resulting gRPC object
*/
exports.loadPackageDefinition = function loadPackageDefintion(packageDef) {
const result = {};
for (const serviceFqn in packageDef) {
const service = packageDef[serviceFqn];
const nameComponents = serviceFqn.split('.');
const serviceName = nameComponents[-1];
let current = result;
for (const package in nameComponents.slice(0, -1)) {
if (!current[package]) {
current[package] = {};
}
current = current[package];
}
current[serviceName] = client.makeClientConstructor(service, serviceName, {});
}
return result;
};
var log_template = _.template(
'{severity} {timestamp}\t{file}:{line}]\t{message}',
{interpolate: /{([\s\S]+?)}/g});

View File

@ -170,3 +170,8 @@ exports.defaultGrpcOptions = {
* An object that completely defines a service.
* @typedef {Object.<string, grpc~MethodDefinition>} grpc~ServiceDefinition
*/
/**
* An object that defines a package hierarchy with multiple services
* @typedef {Object.<string, grpc~ServiceDefinition>} grpc~PackageDefinition
*/