UNPKG

@syncable/core

Version:
32 lines (31 loc) 1.1 kB
import { Observable } from 'rxjs'; import { RPCData } from './rpc-call'; import { IRPCDefinition } from './rpc-definition'; import { RPCMethod } from './rpc-method-decorator'; export declare type RPCPeerType<TLocalDefinition extends IRPCDefinition> = { [TName in TLocalDefinition['name']]: RPCMethod<Extract<TLocalDefinition, { name: TName; }>>; }; export interface IRPCAdapter { incoming$: Observable<RPCData>; connect$: Observable<void>; send(outgoing: RPCData): Promise<void>; } export declare class RPCPeer<TRemoteDefinition extends IRPCDefinition = IRPCDefinition> { private adapter; private requestHandlersMap; private incomingSubscription; constructor(adapter: IRPCAdapter); call<TName extends TRemoteDefinition['name']>(name: TName, ...args: Extract<TRemoteDefinition, { name: TName; }>['args']): Promise<Extract<TRemoteDefinition, { name: TName; }>['return']>; dispose(): void; private onIncoming; private handleRequest; private _handleRequest; private handleResponse; private callLocalMethod; }