grpc-inspect

    0.6.0 • Public • Published

    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

    Install

    npm i grpc-inspect

    DownloadsWeekly Downloads

    12,831

    Version

    0.6.0

    License

    Apache-2.0

    Unpacked Size

    38.7 kB

    Total Files

    8

    Last publish

    Collaborators

    • bojand