UNPKG

@aimee-blue/ab-service-kit

Version:
32 lines (31 loc) 1.36 kB
/// <reference types="node" /> import { Socket } from 'net'; import { Subscription } from 'rxjs'; import { SocketWithInfo, MessageWithInfo } from './types'; import { AnySocketEpic } from '../kit'; import { BasicLogger } from '../logging'; export declare type WaitForCompletionFn = () => Promise<'completed' | 'timed-out'>; export declare type WatchModeDetachBehavior = 'unsubscribe' | 'disconnect'; export interface IConnectedSocket { id: string; pathname: string; ws: SocketWithInfo; socket: Socket; request: MessageWithInfo; subscription?: Subscription; waitForCompletion?: WaitForCompletionFn; onDetach: WatchModeDetachBehavior; } export interface ISocketRegistryState { epicsByPath: Map<string, AnySocketEpic>; sockets: Map<string, IConnectedSocket>; logger: BasicLogger; } export declare const buildRegistryStateApi: (state: ISocketRegistryState) => Readonly<{ addSocket: (socketState: IConnectedSocket) => void; closeSocket: (id: string, code?: number | undefined) => void; detachFromSocketInWatchMode: (id: string) => void; attachToSocket: (id: string, subscription: Subscription, waitForCompletion: WaitForCompletionFn, onDetach: WatchModeDetachBehavior) => void; onServerClose: () => Promise<void>; }>; export declare type RegistryStateApi = ReturnType<typeof buildRegistryStateApi>;