grpc-inspect

gRPC protocol buffer inspection utility

View the Project on GitHub bojand/grpc-inspect

grpc-inspect

npm version build status JavaScript Style Guide License Greenkeeper badge

gRPC Protocol Buffer utility module that generates a descriptor object representing a friendlier descriptor object with utility methods for protocol buffer inspection.

Installation

npm install grpc-inspect

Overview

helloworld.proto

syntax = "proto3";

option java_multiple_files = true;
option java_package = "io.grpc.examples.helloworld";
option java_outer_classname = "HelloWorldProto";
option objc_class_prefix = "HLW";

package helloworld;

service Greeter {
  // Sends a greeting
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}

Sample usage:

const gi = require('grpc-inspect')
const grpc = require('grpc')
const pbpath = path.resolve(__dirname, './route_guide.proto')
const proto = grpc.load(pbpath)
const d = gi(proto)
console.dir(d)

Returned utility descriptor:

{ namespaces:
   { helloworld:
      { name: 'helloworld',
        messages:
         { HelloRequest:
            { name: 'HelloRequest',
              fields:
               [ { name: 'name',
                   type: 'string',
                   id: 1,
                   required: false,
                   repeated: false,
                   map: false,
                   defaultValue: '' } ] },
           HelloReply:
            { name: 'HelloReply',
              fields:
               [ { name: 'message',
                   type: 'string',
                   id: 1,
                   required: false,
                   repeated: false,
                   map: false,
                   defaultValue: '' } ] } },
        services:
         { Greeter:
            { name: 'Greeter',
              package: 'helloworld',
              methods:
               [ { name: 'SayHello',
                   requestStream: false,
                   responseStream: false,
                   requestName: 'HelloRequest',
                   responseName: 'HelloReply' } ] } } } },
  file: '/Users/me/protos/helloworld.proto',
  options:
   { java_multiple_files: true,
     java_package: 'io.grpc.examples.helloworld',
     java_outer_classname: 'HelloWorldProto',
     objc_class_prefix: 'HLW' } }

NOTE If no package name is specified in the protocol buffer definition an empty '' string is used for the package / namespace name.

API Reference

descriptor : Object

Protocol Buffer utility descriptor represents friendlier descriptor object with utility methods for protocol buffer inspection.

Kind: global class
Access: public

descriptor.namespaceNames() ⇒ Array

Returns an array of namespace names within the protocol buffer definition

Kind: static method of descriptor
Returns: Array - array of names
Example

const grpcinspect = require('grpc-inspect')
const grpc = require('grpc')
const pbpath = path.resolve(__dirname, './route_guide.proto')
const proto = grpc.load(pbpath)
const d = grpcinspect(proto)
console.log(d.namespaceNames()) // ['routeguide']

descriptor.serviceNames(namespace) ⇒ Array

Returns an array of service names

Kind: static method of descriptor
Returns: Array - array of names

Param Type Description
namespace String Optional name of namespace to get services. If not present returns service names of all services within the definition.

Example

const grpcinspect = require('grpc-inspect')
const grpc = require('grpc')
const pbpath = path.resolve(__dirname, './route_guide.proto')
const proto = grpc.load(pbpath)
const d = const grpcinspect(proto)
console.log(d.serviceNames()) // ['RouteGuide']

descriptor.service(service) ⇒ Object

Returns the utility descriptor for the service given a servie name. Assumes there are no duplicate service names within the definition.

Kind: static method of descriptor
Returns: Object - service utility descriptor

Param Type Description
service String name of the service

Example

const grpcinspect = require('grpc-inspect')
const grpc = require('grpc')
const pbpath = path.resolve(__dirname, './route_guide.proto')
const proto = grpc.load(pbpath)
const d = grpcinspect(proto)
console.dir(d.service('RouteGuide'))

descriptor.methodNames(service) ⇒ Array

Returns an array of method names for a service

Kind: static method of descriptor
Returns: Array - array of names

Param Type Description
service String name of the service

Example

const grpcinspect = require('grpc-inspect')
const grpc = require('grpc')
const pbpath = path.resolve(__dirname, './route_guide.proto')
const proto = grpc.load(pbpath)
const d = grpcinspect(proto)
console.log(d.methodNames('RouteGuide')) // [ 'GetFeature', 'ListFeatures', 'RecordRoute', 'RouteChat' ]

descriptor.methods(service) ⇒ Array

Returns an array the utility descriptors for the methods of a service. Assumes there are no duplicate service names within the definition.

Kind: static method of descriptor
Returns: Array - array of method utility descriptors

Param Type Description
service String name of the service

Example

const grpcinspect = require('grpc-inspect')
const grpc = require('grpc')
const pbpath = path.resolve(__dirname, './route_guide.proto')
const proto = grpc.load(pbpath)
const d = grpcinspect(proto)
console.dir(d.methods('RouteGuide'))

descriptor.proto() ⇒ Object

Returns the internal proto object

Kind: static method of descriptor
Returns: Object - the internal proto object
Example

const grpcinspect = require('grpc-inspect')
const grpc = require('grpc')
const pbpath = path.resolve(__dirname, './route_guide.proto')
const proto = grpc.load(pbpath)
const d = grpcinspect(proto)
console.dir(d.proto())

descriptor.client(serviceName) ⇒ Object

Gets the gRPC service / client object / function

Kind: static method of descriptor
Returns: Object - the Client object

Param Type Description
serviceName serviceName The service name. Can and should include package.

Example

const grpcinspect = require('grpc-inspect')
const grpc = require('grpc')
const pbpath = path.resolve(__dirname, './route_guide.proto')
const proto = grpc.load(pbpath)
const d = grpcinspect(proto)
console.dir(d.client('RouteGuide'))
console.dir(d.client('routeguide.RouteGuide'))

grpcinspect(input) ⇒ Object

Returns protocol buffer utility descriptor. Takes a loaded grpc / protocol buffer object and returns a friendlier descriptor object

Kind: global function
Returns: Object - the utility descriptor

Param Type Description
input Object loaded proto object

Example

const gi = require('grpc-inspect')
const grpc = require('grpc')
const pbpath = path.resolve(__dirname, './route_guide.proto')
const proto = grpc.load(pbpath)
const d = gi(proto)
console.dir(d)

License

Apache 2.0