Registry / devops / grpc-ts-middleware

grpc-ts-middleware

JSON →
library1.0.11jsnpmunverified

A TypeScript library providing pre-call and post-call middleware for gRPC Node.js servers. Currently at version 1.0.11, it has zero external dependencies but requires the 'grpc' package as a peer dependency. It supports adding middleware functions that run before and after gRPC calls, and includes built-in support for Jaeger tracing header propagation. Unlike manual interception, it allows adding middleware without modifying service implementations.

npm install grpc-ts-middleware
INSTALL
IMPORT
SIG · GRPC-TS-MIDDLEWARE
G
grpc-ts-middleware
devopsjavascriptv1.0.11
harness data pending
Install & Compatibility
Where this runs

No compatibility data collected yet for this library.

Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

GrpcMiddleware
import GrpcMiddleware from 'grpc-ts-middleware';
const GrpcMiddleware = require('grpc-ts-middleware').default;
Default import, but CommonJS users may need .default or use require().
GrpcCall
import { GrpcCall } from 'grpc-ts-middleware';
import GrpcCall from 'grpc-ts-middleware';
GrpcCall is a named export, not default.
GrpcMiddleware (TypeScript)
import GrpcMiddleware from 'grpc-ts-middleware';
import { GrpcMiddleware } from 'grpc-ts-middleware';
GrpcMiddleware is the default export. Named export pattern will fail.

Creates a gRPC server with pre- and post-call middleware that logs calls before and after handling the echo RPC.

import * as grpc from 'grpc'; import GrpcMiddleware, { GrpcCall } from 'grpc-ts-middleware'; import { EchoReply, EchoRequest } from './proto/echo_pb'; import { EchoManagerService } from './proto/echo_grpc_pb'; function doEcho(call: grpc.ServerUnaryCall<EchoRequest>, callback: grpc.sendUnaryData<EchoReply>) { const reply = new EchoReply(); reply.setMessage(call.request.getMessage()); callback(null, reply); } function start(): grpc.Server { const server: grpc.Server = new grpc.Server(); const grpcMiddleware = new GrpcMiddleware( server, [(call: GrpcCall) => console.log('Pre-call handler 1', call)], [(error: grpc.ServiceError | null, call: GrpcCall) => console.log('Post-call handler', call, error)] ); grpcMiddleware.addService(EchoManagerService, { echo: doEcho }); grpcMiddleware.enableTracing(); server.bind('0.0.0.0:9090', grpc.ServerCredentials.createInsecure()); server.start(); return server; } start();
Debug
Known issues
gotchaGrpcMiddleware must receive the server instance and add services via addService, not through server.addService.
fix
Always call new GrpcMiddleware(server, preHandlers, postHandlers) and then grpcMiddleware.addService(service, implementations).
affects: >=1.0.0
gotchaThe grpc package must be installed separately; it is not bundled. Using a different gRPC library like @grpc/grpc-js will cause conflicts.
fix
Install grpc (the legacy gRPC library) alongside grpc-ts-middleware. For @grpc/grpc-js, this library does not support it.
affects: >=1.0.0
gotchaThe call object passed to post-call handlers includes metadata modified by pre-call handlers, but pre-call handlers cannot modify the call request body.
fix
Use pre-call handlers for logging/validation only; use post-call handlers to inspect errors or modify response metadata.
affects: >=1.0.0
gotchaenableTracing() only propagates Jaeger-style tracing headers; other tracing systems require custom middleware.
fix
Implement custom pre/post handlers for other tracing formats.
affects: >=1.0.0
Errors
Common errors & fixes
TypeError: GrpcMiddleware is not a constructor
Using named import instead of default import.
fix
Use 'import GrpcMiddleware from 'grpc-ts-middleware';' (without braces).
Error: Cannot find module 'grpc'
The grpc peer dependency is not installed.
fix
Run 'npm install grpc --save'.
TypeError: grpcMiddleware.addService is not a function
GrpcMiddleware constructor was called without passing the server instance correctly.
fix
Ensure the first argument to new GrpcMiddleware is a valid grpc.Server instance.
Upgrade
Version history
1.0.11latest on npm
Audit
Dependencies
grpcrequiredPeer dependency: the library wraps gRPC server methods and requires the gRPC package to be installed separately.
Agent activity
6 hits · last 30 days
node
6
Resources
grpc-ts-middleware — npm install grpc-ts-middleware · libregistry