Skip to content

sinwanjs/sinwan-grpc

Repository files navigation

Sinwan Logo

Sinwan gRPC

Production-ready gRPC support for Sinwan Engine — typed services, health checks, interceptors, cancellation, compression, propagation, reflection, grpc-web proxy, OpenTelemetry tracing, load balancing, TLS rotation, and channel pooling.

GitHub stars NPM Downloads License


sinwan-grpc implements the GRPCProvider interface from sinwan-engine using @grpc/grpc-js and @grpc/proto-loader. It provides a typed gRPC router, client, and a full suite of production features — all built on Bun.

Install

bun add sinwan-engine sinwan-grpc

Requires Bun runtime and sinwan-engine v1.0.0+.

Quick Start

import { Sinwan } from "sinwan-engine";
import { sinwanGRPC } from "sinwan-grpc";

const app = await Sinwan.create();

app.register(sinwanGRPC);

app.grpc("greeter", {
  proto: "./proto/greeter.proto",
  package: "hello.v1",
  service: "Greeter",
  methods: {
    SayHello: (ctx, request: { name: string }) => ({
      message: `Hello, ${request.name}!`,
    }),
  },
});

await app.listenGRPC({ port: 50051 });

Features

  • Typed gRPC services — Define unary, server-streaming, client-streaming, and bidi handlers with full TypeScript inference
  • Health checks — gRPC Health Checking Protocol (grpc.health.v1.Health) with per-service status management
  • Interceptors — Composable server and client interceptors for cross-cutting concerns
  • CancellationAbortSignal integration for client streaming calls and server-side cancellation detection
  • Compression — Configurable gzip/deflate compression via grpc-js channel and server options
  • Deadline & metadata propagationAsyncLocalStorage-based context propagation with grpc-timeout header parsing
  • Server reflection — gRPC Server Reflection API (grpc.reflection.v1alpha) for service discovery
  • grpc-web proxy — HTTP/1.1 proxy translating between grpc-web format and native gRPC for browser clients
  • OpenTelemetry tracing — Server and client interceptors creating and propagating OTel spans
  • Load balancingpick_first, round_robin, and grpclb policy configuration with multi-address targeting
  • TLS certificate rotation — File-watching utilities that reload credentials without restart
  • Channel pooling — Multi-channel pool with round-robin and least-connections selection strategies

Development

bun test          # Run all tests (214 tests across 14 files)
bun run typecheck # TypeScript type checking
bun run build     # Build distributable

Author

Mohammed Ben Cheikh

License

MIT — see LICENSE.

About

gRPC support package for sinwan-engine and sinwan-platform — implements GRPCProvider using @grpc/grpc-js

Resources

License

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors