UNPKG

stagehand

Version:

A type-safe library for communicating between JS processes, workers, or other message-passing boundaries.

26 lines (25 loc) 1.05 kB
import FunctionHandleRegistry from './function-handle-registry'; import { MessageEndpoint } from '.'; /** * Coordinates command/response pairs across a given `MessageEndpoint`, returning * a promise for each outgoing command and dispatching incoming ones to a given * executor. */ export default class CommandCoordinator<Commands> { private endpoint; private handleRegistry; private executor; private nextSeq; private pendingCommands; constructor(endpoint: MessageEndpoint, handleRegistry: FunctionHandleRegistry, executor: Commands); sendCommand<Name extends keyof Commands>(name: Name, ...args: CommandParams<Commands[Name]>): Promise<CommandReturn<Commands[Name]>>; private messageReceived; private dispatchResponse; private dispatchCommand; private sendMessage; private isResponse; private isCommand; } type CommandParams<T> = T extends (...params: infer Params) => any ? Params : never; type CommandReturn<T> = T extends (...params: any[]) => infer Return ? Return : never; export {};