@sagebox-be/proto-contracts
v1.0.16
Published
Sagebox gRPC Protocol Buffer contracts and TypeScript definitions
Downloads
372
Maintainers
Readme
@sagebox-be/proto-contracts
Sagebox gRPC Protocol Buffer contracts and TypeScript type definitions.
📦 Installation
npm install @sagebox-be/proto-contracts
# or
yarn add @sagebox-be/proto-contracts
# or
pnpm add @sagebox-be/proto-contracts🚀 Usage
Import TypeScript Types
import { ProductServiceClient, ProductServiceController, GetProductByIdRequest, ProductResponse, getProtoPath, getAllProtosPaths } from '@sagebox-be/proto-contracts';Use in NestJS gRPC Microservice
import { Module } from '@nestjs/common';
import { Transport, ClientsModule } from '@nestjs/microservices';
import { getProtoPath } from '@sagebox-be/proto-contracts';
@Module({
imports: [
ClientsModule.register([
{
name: 'PRODUCT_SERVICE',
transport: Transport.GRPC,
options: {
package: 'product',
protoPath: getProtoPath('product.proto'),
url: 'localhost:5000',
},
},
]),
],
})
export class AppModule {}Use in Node.js gRPC Client
import * as grpc from '@grpc/grpc-js';
import * as protoLoader from '@grpc/proto-loader';
import { getProtoPath } from '@sagebox-be/proto-contracts';
import type { ProductServiceClient } from '@sagebox-be/proto-contracts';
const PROTO_PATH = getProtoPath('product.proto');
const packageDefinition = protoLoader.loadSync(PROTO_PATH, {
keepCase: true,
longs: String,
enums: String,
defaults: true,
oneofs: true,
});
const protoDescriptor = grpc.loadPackageDefinition(packageDefinition);
const productProto = protoDescriptor.product as any;
const client: ProductServiceClient = new productProto.ProductService('localhost:5000', grpc.credentials.createInsecure());
// Make gRPC calls
client.getProductById({ id: 'product-123' }, (error, response) => {
if (error) {
console.error(error);
} else {
console.log(response);
}
});Use Proto Files Directly
import { getAllProtosPaths } from '@sagebox-be/proto-contracts';
const protoPaths = getAllProtosPaths();
console.log(protoPaths.product); // Path to product.proto📁 Package Contents
- TypeScript Types: Generated from proto files with full type safety
- Proto Files: Original
.protofiles for gRPC code generation in any language - Helper Functions: Utilities to get proto file paths
🔧 Development
Generate Types from Proto
npm run proto:generateBuild Package
npm run buildPublish
npm publish📖 Available Services
ProductService
Methods
GetProductsByCategoryId(GetProductsByCategoryIdRequest): GetProductsResponseGetProductById(GetProductByIdRequest): ProductResponseCreateProduct(CreateProductRequest): ProductResponse
🤝 Contributing
When adding new proto files:
- Add the
.protofile toproto/directory - Run
npm run proto:generateto generate TypeScript types - Export types in
src/index.ts - Update
getAllProtosPaths()insrc/utils.ts - Build and publish
📝 License
MIT
