Skip to content

DimaKoval/type-grpc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

type-grpc

type-grpc is typescript library to generate grpc service definitions

installation

npm install type-grpc

OR

yarn add type-grpc

Usage

typescript service definitions

import {
  Service,
  RPC,
  Input,
  Message,
  Field,
  Metadata,
  RPCMeta,
} from 'type-grpc';

@Message()
class ServiceMethodResponse {
  @Field()
  uuid: string;

  @Field()
  message: string;
}

@Message()
export class MethodInput {
  @Field()
  name: string;
}

@Service()
export class ServiceName {
  @RPC(type => ServiceMethodResponse, {})
  async methodName(
            @Metadata() metadata: RPCMeta,
            @Input(type => MethodInput, { nullable: true }) input: MethodInput,
  ): Promise<ServiceMethodResponse> {
    return {
      uuid: 'f23fd-434dfs-4324fdsf-43432fd',
      message: `Hello ${input.name}`,
    };
  }
}

mali grpc server with type-grpc

import Mali from 'mali';

import { generateProto } from 'type-grpc';
import { ServiceName } from './ServiceName';

(async () => {
  const path = `${__dirname}/service.proto`;
  const packageName = 'PackageName';

  await generateProto({
    path,
    package: packageName,
    services: [ServiceName],
  });

  const app = new Mali(path);
  const serviceMethods = new ServiceName();
  app.use({
    methodName: serviceMethods.methodName,
    methodNameWithEmptyInput: serviceMethods.methodNameWithEmptyInput,
  }, packageName);
  app.start('127.0.0.1:50051');
})();

⚠ warning ⚠

this package is under development, so it's not production ready. any contributions in any way is appreciated

About

type-grpc is typescript library to generate grpc service definitions

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published