@inversifyjs/grpc-core
v1.0.2
Published
InversifyJS gRPC core package
Maintainers
Readme
@inversifyjs/grpc-core
Decorators and server adapter for gRPC services. @Service stores a service definition, @RPC(name) maps a method to the definition entry with that key, and InversifyGrpcAdapter reads that metadata at build(). A concrete adapter registers the resulting handlers with a transport.
Use the key exactly as the generated definition has it: @RPC('GetHero') for @grpc/proto-loader, which keeps the proto method name, or @RPC('getHero') for generators that emit camelCase keys.
Throw a GrpcError subclass, such as NotFoundGrpcError or UnauthenticatedGrpcError, from a method, guard, middleware, interceptor or pipe to end the call with that status. A guard that returns false ends the call with PERMISSION_DENIED, and an error with no matching filter ends it with UNKNOWN.
RPC methods without parameter decorators receive (call, callback), as in @grpc/grpc-js; the callback is undefined for server-streaming and bidirectional RPCs. Once a method has a decorated parameter, every argument comes from a decorator: @Call(), @Callback(), or one made with createCustomParameterDecorator(handler, ...pipes). Global pipes and the decorator's pipes run on each decorated parameter before the method is called.
A unary or client-streaming method can reply in two ways. If it returns the response message, interceptor transforms run on it and the adapter sends it. If it calls the callback itself and returns nothing, the adapter sends nothing and transforms don't run. A method that takes @Callback() always sends its own response. Server-streaming and bidirectional methods write to the call, and @Callback() can't be used on them, because those calls have no callback.
