Security News
The Unpaid Backbone of Open Source: Solo Maintainers Face Increasing Security Demands
Solo open source maintainers face burnout and security challenges, with 60% unpaid and 60% considering quitting.
nestjs-proto-gen-ts
Advanced tools
Generate TypeScript interfaces for Nest.js gRPC from proto files
Generate TypeScript code from proto files.
This package uses the protobufjs library to auto-generate TypeScript or JavaScript code using handlebars templates.
The package does not rely on the `protoc' compiler and generates TypeScript code directly, rather than outputting types from the generated JavaScript code. This makes it easy to use the automatically generated code because it does not need to be compiled at the time of creation.
$ npm install nestjs-proto-gen-ts
Protobuf file hero-proto/hero.proto:
syntax = "proto3";
package hero;
service HeroesService {
rpc FindOne (HeroById) returns (Hero) {}
}
message HeroById {
int32 id = 1;
}
message Hero {
int32 id = 1;
string name = 2;
}
Generate interfaces:
$ tsproto --path ./hero-proto
Output:
import { Observable } from 'rxjs';
import { Metadata } from '@grpc/grpc-js';
export namespace hero {
export interface HeroesService {
findOne(data: HeroById, metadata?: Metadata): Observable<Hero>;
}
export interface HeroById {
id?: number;
}
export interface Hero {
id?: number;
name?: string;
}
}
Controller:
...
import { hero } from 'hero-proto/hero';
type HeroById = hero.HeroById;
@Controller()
export class HeroesController implements hero.HeroesService {
@GrpcMethod('HeroesService', 'FindOne')
findOne(data: HeroById, meta: Metadata): Observable<hero.Hero> {
const items = [
{ id: 1, name: 'John' },
{ id: 2, name: 'Doe' },
];
return items.find(({ id }) => id === data.id);
}
}
Client:
...
import { hero } from 'hero-proto/hero';
@Injectable()
export class AppService implements OnModuleInit {
private heroesService: hero.HeroesService;
constructor(@Inject('HERO_PACKAGE') private client: ClientGrpc) {}
onModuleInit() {
this.heroesService = this.client.getService<hero.HeroesService>('HeroesService');
}
getHero(): Observable<string> {
return this.heroesService.findOne({ id: 1 });
}
}
Base usage:
$ tsproto --path grpc-proto
Output dir:
$ tsproto --path grpc-proto --output any-dir
Target files:
$ tsproto --path grpc-proto --target one.proto two.proto
Ignore directories or files:
$ tsproto --path grpc-proto --ignore grpc-proto/ignore-dir
Custom handlebar's template for output:
$ tsproto --path grpc-proto --template custom-template.hbs
The following options are available:
--version, -v Show version number [boolean]
--help, -h Show help [boolean]
--path, -p Path to root directory [array] [required]
--output, -o Path to output directory [string]
--template Handlebar's template for output
[string] [default: "templates/nestjs-grpc.hbs"]
--target, -t Proto files [array] [default: [".proto"]]
--ignore, -i Ignore file or directories
[array] [default: ["node_modules","dist"]]
--comments, -c Add comments from proto [boolean] [default: true]
--verbose Log all output to console [boolean] [default: true]
FAQs
Generate TypeScript interfaces for Nest.js gRPC from proto files
The npm package nestjs-proto-gen-ts receives a total of 3,115 weekly downloads. As such, nestjs-proto-gen-ts popularity was classified as popular.
We found that nestjs-proto-gen-ts demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Solo open source maintainers face burnout and security challenges, with 60% unpaid and 60% considering quitting.
Security News
License exceptions modify the terms of open source licenses, impacting how software can be used, modified, and distributed. Developers should be aware of the legal implications of these exceptions.
Security News
A developer is accusing Tencent of violating the GPL by modifying a Python utility and changing its license to BSD, highlighting the importance of copyleft compliance.