Home

Awesome

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

<a name="descriptor"></a>

descriptor : <code>Object</code>

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

Kind: global class
Access: public

<a name="descriptor.namespaceNames"></a>

descriptor.namespaceNames() ⇒ <code>Array</code>

Returns an array of namespace names within the protocol buffer definition

Kind: static method of <code>descriptor</code>
Returns: <code>Array</code> - 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']

<a name="descriptor.serviceNames"></a>

descriptor.serviceNames(namespace) ⇒ <code>Array</code>

Returns an array of service names

Kind: static method of <code>descriptor</code>
Returns: <code>Array</code> - array of names

ParamTypeDescription
namespace<code>String</code>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']

<a name="descriptor.service"></a>

descriptor.service(service) ⇒ <code>Object</code>

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 <code>descriptor</code>
Returns: <code>Object</code> - service utility descriptor

ParamTypeDescription
service<code>String</code>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'))

<a name="descriptor.methodNames"></a>

descriptor.methodNames(service) ⇒ <code>Array</code>

Returns an array of method names for a service

Kind: static method of <code>descriptor</code>
Returns: <code>Array</code> - array of names

ParamTypeDescription
service<code>String</code>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' ]

<a name="descriptor.methods"></a>

descriptor.methods(service) ⇒ <code>Array</code>

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 <code>descriptor</code>
Returns: <code>Array</code> - array of method utility descriptors

ParamTypeDescription
service<code>String</code>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'))

<a name="descriptor.proto"></a>

descriptor.proto() ⇒ <code>Object</code>

Returns the internal proto object

Kind: static method of <code>descriptor</code>
Returns: <code>Object</code> - 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())

<a name="descriptor.client"></a>

descriptor.client(serviceName) ⇒ <code>Object</code>

Gets the gRPC service / client object / function

Kind: static method of <code>descriptor</code>
Returns: <code>Object</code> - the Client object

ParamTypeDescription
serviceName<code>serviceName</code>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'))

<a name="grpcinspect"></a>

grpcinspect(input) ⇒ <code>Object</code>

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

Kind: global function
Returns: <code>Object</code> - the utility descriptor

ParamTypeDescription
input<code>Object</code>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