UNPKG

nice-grpc

Version:

A Node.js gRPC library that is nice to you

35 lines (34 loc) 1.76 kB
import { CompatServiceDefinition, MethodDefinition, ServiceDefinition } from '.'; export type TsProtoServiceDefinition = { name: string; fullName: string; methods: { [method: string]: TsProtoMethodDefinition<any, any>; }; }; export type TsProtoMethodDefinition<Request, Response> = { name: string; requestType: TsProtoMessageType<Request>; requestStream: boolean; responseType: TsProtoMessageType<Response>; responseStream: boolean; options: { idempotencyLevel?: 'IDEMPOTENT' | 'NO_SIDE_EFFECTS'; _unknownFields?: {}; }; }; export type TsProtoMessageType<Message> = { encode(message: Message): ProtobufJsWriter; decode(input: Uint8Array): Message; fromPartial?(object: unknown): Message; }; export type ProtobufJsWriter = { finish(): Uint8Array; }; export type TsProtoMessageIn<Type extends TsProtoMessageType<any>> = Type['fromPartial'] extends Function ? Parameters<Type['fromPartial']>[0] : Type extends TsProtoMessageType<infer Message> ? Message : never; export type FromTsProtoServiceDefinition<Service extends TsProtoServiceDefinition> = { [M in keyof Service['methods']]: FromTsProtoMethodDefinition<Service['methods'][M]>; }; export type FromTsProtoMethodDefinition<Method> = Method extends TsProtoMethodDefinition<infer Request, infer Response> ? MethodDefinition<TsProtoMessageIn<Method['requestType']>, Request, TsProtoMessageIn<Method['responseType']>, Response, Method['requestStream'], Method['responseStream']> : never; export declare function fromTsProtoServiceDefinition(definition: TsProtoServiceDefinition): ServiceDefinition; export declare function isTsProtoServiceDefinition(definition: CompatServiceDefinition): definition is TsProtoServiceDefinition;