type-grpc is typescript library to generate grpc service definitions
npm install type-grpc
OR
yarn add type-grpc
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}`,
};
}
}
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');
})();
this package is under development, so it's not production ready. any contributions in any way is appreciated