UNPKG

trpc-webrtc

Version:

A set of TRPC adapters for communication via RTCDataChannel in the browser

21 lines (20 loc) 1.12 kB
import { AnyRouter, inferRouterError } from "@trpc/server"; import { Observer, UnsubscribeFn } from "@trpc/server/observable"; import { TRPCResponseMessage } from "@trpc/server/rpc"; import { Operation, TRPCLink, TRPCClientError } from "@trpc/client"; type RTCCallbackResult<TRouter extends AnyRouter, TOutput> = TRPCResponseMessage<TOutput, inferRouterError<TRouter>>; type RTCCallbackObserver<TRouter extends AnyRouter, TOutput> = Observer<RTCCallbackResult<TRouter, TOutput>, TRPCClientError<TRouter>>; export interface DataChannelClientOptions { dataChannel: RTCDataChannel; } export declare function createDataChannelClient(opts: DataChannelClientOptions): { close: () => void; request: (op: Operation, callbacks: RTCCallbackObserver<AnyRouter, unknown>) => UnsubscribeFn; getConnection(): RTCDataChannel; }; export type TRPCDataChannelClient = ReturnType<typeof createDataChannelClient>; export interface DataChannelLinkOptions { client: TRPCDataChannelClient; } export declare function dataChannelLink<TRouter extends AnyRouter>(opts: DataChannelLinkOptions): TRPCLink<TRouter>; export {};