UNPKG

@applitools/socket

Version:

Applitools implementation for bidi-communication protocol

39 lines (38 loc) 1.72 kB
import { type Logger } from '@applitools/logger'; import { type Transport } from './transport'; import * as transports from './transports'; export interface Socket<TSocket = unknown> { readonly ready: boolean; readonly target: TSocket; use(socket: TSocket): void; cleanup(): void; emit(type: string | { name: string; key: string; }, payload?: any): () => void; on(type: string | { name: string; key: string; }, fn: (payload?: any, key?: string) => any): () => void; once(type: string | { name: string; key: string; }, fn: (payload?: any, key?: string) => any): () => void; off(type: string | { name: string; key: string; }, fn: (payload?: any, key?: string) => any): boolean; request(name: string, payload?: any): Promise<any>; command(name: string, fn: (payload?: any) => any): () => void; wait(name: string, options?: WaitOptions): PromiseLike<void>; wait<TResult>(name: string, fn: (payload?: any) => TResult, options?: WaitOptions): PromiseLike<TResult>; } export type WaitOptions = { timeout: number; }; export interface SocketOptions<TTransport extends keyof typeof transports | Transport<unknown, unknown>> { transport: TTransport; logger?: Logger; maskLog?: boolean; } export declare function makeSocket<TTransport extends keyof typeof transports | Transport<unknown, unknown>, TSocket extends TTransport extends keyof typeof transports ? (typeof transports)[TTransport] extends Transport<infer USocket, any> ? USocket : never : TTransport extends Transport<infer USocket, any> ? USocket : never>(target: TSocket, options: SocketOptions<TTransport>): Socket<TSocket>;