sinwan-grpc
v0.1.0
Published
gRPC support package for sinwan-engine and sinwan-platform — implements GRPCProvider using @grpc/grpc-js
Maintainers
Readme
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-grpcRequires 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
- Cancellation —
AbortSignalintegration for client streaming calls and server-side cancellation detection - Compression — Configurable gzip/deflate compression via grpc-js channel and server options
- Deadline & metadata propagation —
AsyncLocalStorage-based context propagation withgrpc-timeoutheader 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 balancing —
pick_first,round_robin, andgrpclbpolicy 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 distributableAuthor
Mohammed Ben Cheikh
License
MIT — see LICENSE.
