/// /// /// import { Service, ServiceMessage, ServiceOptions } from "../Service"; import { Session, Channel } from 'better-sse'; import http from 'http'; import https from 'https'; import { Readable } from "node:stream"; export type SSEProps = { server: http.Server | https.Server; path: string; channels?: string[]; onconnection?: (session: any, sseinfo: any, _id: string, req: http.IncomingMessage, res: http.ServerResponse) => void; onclose?: (sse: any) => void; onconnectionclose?: (session: any, sseinfo: any, _id: string, req: http.IncomingMessage, res: http.ServerResponse) => void; type?: 'sse' | string; _id?: string; [key: string]: any; }; export type SSEChannelInfo = { channel: Channel>; sessions: { [key: string]: Session; }; requests: { [key: string]: Function; }; send: (message: any, eventName?: string, sessionId?: string) => any; request: (message: any, method?: string, sessionId?: string, eventName?: string) => Promise | Promise[]; post: (route: any, args?: any, method?: string, sessionId?: string, eventName?: string) => void; run: (route: any, args?: any, method?: string, sessionId?: string, eventName?: string) => Promise | Promise[]; subscribe: (route: any, callback?: ((res: any) => void) | string, args?: any[], key?: string, subInput?: boolean, sessionId?: string, eventName?: string) => Promise | Promise[] | undefined; unsubscribe: (route: any, sub: number, sessionId?: string, eventName?: string) => Promise | Promise[]; terminate: () => boolean; _id: string; graph: SSEbackend; } & SSEProps; export type SSEClientInfo = { _id: string; session: Session; served: SSEChannelInfo; send: (message: any, eventName?: string) => any; request: (message: any, method?: string, eventName?: string) => Promise; post: (route: any, args?: any, method?: string, eventName?: string) => void; run: (route: any, args?: any, method?: string, eventName?: string) => Promise; subscribe: (route: any, callback?: ((res: any) => void) | string, args?: any[], key?: string, subInput?: boolean, sessionId?: string, eventName?: string) => any; unsubscribe: (route: any, sub: number, eventName?: string) => Promise; terminate: () => boolean; onclose?: (session: any, sseinfo: any, _id: string, req: http.IncomingMessage, res: http.ServerResponse) => void; graph: SSEbackend; }; export declare class SSEbackend extends Service { name: string; debug: boolean; servers: { [key: string]: SSEChannelInfo; }; eventsources: { [key: string]: SSEClientInfo; }; connections: { servers: { [key: string]: SSEChannelInfo; }; eventsources: { [key: string]: SSEClientInfo; }; }; constructor(options?: ServiceOptions); openSSE: (options: SSEProps) => false | SSEChannelInfo; open: (options: SSEProps) => false | SSEChannelInfo; streamIterable: (path: string, iterable: Iterable | AsyncIterable, sessionId?: string, eventName?: string) => Promise | Promise[]; streamReadable: (path: string, readable: Readable, sessionId?: string, eventName?: string) => Promise | Promise[]; transmit: (data: string | ServiceMessage, path?: string, eventName?: string, sessionId?: string) => boolean; request: (message: any, path: string, method?: string, sessionId?: string, eventName?: string) => Promise; runRequest: (message: any, path: string, callbackId: string | number, sessionId?: string) => any; subscribeSSE: (route: string, path: string, args?: any[], key?: string, subInput?: boolean, sessionId?: string, eventName?: string) => number; subscribeToSSE: (route: string, path: string, callback?: string | ((res: any) => void), args?: any[], key?: string, subInput?: boolean, sessionId?: string, eventName?: string) => Promise | Promise[]; terminate: (sse: string | SSEChannelInfo) => boolean; }