Skip to main content

protocat

Enumerations

Classes

Interfaces

Type Aliases

Middleware

Ƭ Middleware<Extension>: (call: ProtoCatAnyCall<Extension>, next: NextFn) => any

Type parameters

NameType
Extensionunknown

Type declaration

▸ (call, next): any

Application generic middleware

Parameters
NameType
callProtoCatAnyCall<Extension>
nextNextFn
Returns

any

Defined in

lib/server/call.ts:78


ProtoCatCall

Ƭ ProtoCatCall<Extension, Req, Res, Type>: { bufferedResponse?: Buffer ; flushInitialMetadata: () => void ; initialMetadata: grpc.Metadata ; meta: Record<string, string> ; metadata: grpc.Metadata ; method: string ; package: string ; path: string ; request?: Req ; response?: Res ; responseSerialize: Serialize<Res> ; service: string ; trailingMetadata: grpc.Metadata ; type: Type } & Extension & Type extends Unary ? grpc.ServerUnaryCall<Req, Res> & { response: Res } : unknown & Type extends ClientStream ? TypedOnData<grpc.ServerReadableStream<Req, Res>, Req> & { response: Res } : unknown & Type extends ServerStream ? grpc.ServerWritableStream<Req, Res> : unknown & Type extends Bidi ? TypedOnData<grpc.ServerDuplexStream<Req, Res>, Req> : unknown

Extended gRPC call

Type parameters

NameType
Extensionunknown
ReqMessage
ResMessage
Typeextends CallType = CallType

Defined in

lib/server/call.ts:10


ServiceImplementation

Ƭ ServiceImplementation<T, Extension>: RemoveIdxSgn<{ [M in keyof T]: MethodDef2ServiceHandler<T[M], Extension> }>

Create service handler type for whole client definition.

Useful for better code-splitting

const unaryHandler: ServiceImplementation<
IGreetingService,
MyContext
>['unary'] = call => call.uid

Type parameters

NameType
TT
Extensionunknown

Defined in

lib/server/call.ts:118

Functions

accessLogInterceptor

accessLogInterceptor(fn): Interceptor

Parameters

NameType
fn(context: { metadata: Metadata ; options: InterceptorOptions }, next: () => Promise<StatusObject>) => any

Returns

Interceptor

Defined in

lib/client/interceptors/access-log-interceptor.ts:4


createCache

createCache<E>(cache, cb?): Middleware<E>

Type parameters

NameType
Eunknown

Parameters

NameTypeDescription
cacheCacheImplementation<E>Response binary cache implementation
cb?(call: ProtoCatCall<E, Message, Message, Unary>, hit: boolean, hash: string) => anyOptional callback to react on cache miss/hit. Called once per request ASAP after cache retrieval

Returns

Middleware<E>

Defined in

lib/server/middleware/cache.ts:28


createClient

createClient<D>(clientDef, address, creds?, options?): D extends (...args: any[]) => C ? UpdatedClient_<C> : { [K in string | number | symbol]: D[K] extends Function ? UpdatedClient_<C_> : never }

Type parameters

NameType
Dextends Record<string, (...args: any[]) => Client> | (...args: any[]) => Client

Parameters

NameType
clientDefD
addressstring
creds?ChannelCredentials
options?Partial<ClientOptions>

Returns

D extends (...args: any[]) => C ? UpdatedClient_<C> : { [K in string | number | symbol]: D[K] extends Function ? UpdatedClient_<C_> : never }

Defined in

lib/client/client.ts:155


metadataInterceptor

metadataInterceptor(fn): Interceptor

Parameters

NameType
fn(metadata: Metadata, options: InterceptorOptions) => any

Returns

Interceptor

Defined in

lib/client/interceptors/metadata-interceptor.ts:4


onError

onError(handler): Middleware<unknown>

onError creates a ProtoCat middleware that can be used to intercept errors from various origins, either from:

  • sync throws (or async rejects) from the following middlewares (or handlers) in the call stack (chain of next functions)
  • error emits on streamed calls

No error is ever send to client

app.use(onError(() => {}))

Errors are logged and rethrown without stack trace

app.use(onError((e, call) => {
console.log(e, call)
e.stack = undefined
throw e
}))

Parameters

NameTypeDescription
handlerErrorHandlerCustom error handler for re-throwing errors and error emits. Result is awaited.

Returns

Middleware<unknown>

Defined in

lib/server/middleware/on-error.ts:66