UNPKG

@protobuf-ts/grpcweb-transport

Version:

gRPC-web transport for clients generated by the protoc plugin "protobuf-ts"

77 lines (76 loc) 3.09 kB
import { RpcMetadata } from "@protobuf-ts/runtime-rpc"; import { GrpcStatusCode } from "./goog-grpc-status-code"; /** * Create fetch API headers for a grpc-web request. */ export declare function createGrpcWebRequestHeader(headers: Headers, format: GrpcWebFormat, timeout: Date | number | undefined, meta?: RpcMetadata, userAgent?: string): Headers; /** * Create a fetch API request body for a grpc-web request. * * Packs the serialized message into a data frame, and base64 encodes if * format is "text". */ export declare function createGrpcWebRequestBody(message: Uint8Array, format: GrpcWebFormat): Uint8Array | string; export declare function createGrpcWebRequestBody(message: Uint8Array, format: "text"): string; export declare function createGrpcWebRequestBody(message: Uint8Array, format: "binary"): Uint8Array; /** * Parses a grpc status (code and optional text) and meta data from response * headers. * * If given a fetch response, checks for fetch-specific error information * ("type" property) and whether the "body" is null and throws a RpcError. */ export declare function readGrpcWebResponseHeader(fetchResponse: Response): [GrpcStatusCode | undefined, string | undefined, RpcMetadata]; export declare function readGrpcWebResponseHeader(headers: HttpHeaders, httpStatus: number, httpStatusText: string): [GrpcStatusCode | undefined, string | undefined, RpcMetadata]; /** * Parses a grpc status (code and optional text) and meta data from response * trailers. * * Response trailers are expected as a byte array, but are actually just an * ASCII string with HTTP headers. Just pass the data of a grpc-web trailer * frame. */ export declare function readGrpcWebResponseTrailer(data: Uint8Array): [GrpcStatusCode, string | undefined, RpcMetadata]; /** * A grpc-frame type. Can be used to determine type of frame emitted by * `readGrpcWebResponseBody()`. */ export declare enum GrpcWebFrame { DATA = 0, TRAILER = 128 } /** * Parses a grpc-web response (unary or server streaming) from a fetch API * stream. * * Emits grpc-web frames. * * The returned promise resolves when the response is complete. */ export declare function readGrpcWebResponseBody(stream: WebResponseBodyStream, contentType: string | undefined | null, onFrame: FrameHandler): Promise<void>; export interface StreamReader<T> { next(): Promise<StreamReaderNextResult<T>>; } export declare type StreamReaderNextResult<T> = StreamReaderNextValueResult<T> | StreamReaderNextDoneResult<T>; interface StreamReaderNextValueResult<T> { done: true; value?: T; } interface StreamReaderNextDoneResult<T> { done: false; value: T; } export interface FrameHandler { (type: GrpcWebFrame, data: Uint8Array): void; } interface NodeReadableStream<T> { [Symbol.asyncIterator](): { next(): Promise<StreamReaderNextResult<T>>; }; } declare type WebResponseBodyStream = ReadableStream<Uint8Array> | NodeReadableStream<Uint8Array>; declare type GrpcWebFormat = "text" | "binary"; declare type HttpHeaders = { [key: string]: string | string[]; }; export {};