UNPKG

@directus/api

Version:

Directus is a real-time API and App dashboard for managing SQL database content

44 lines (43 loc) 1.77 kB
import type { Bus } from '@directus/memory'; import { type WebSocketClient } from '@directus/types'; import { type BroadcastMessage, type ClientID, type ServerError, type ServerMessage } from '@directus/types/collab'; type Instance = { clients: ClientID[]; rooms: string[]; }; type Registry = Record<string, Instance>; type RegistrySnapshot = { inactive: Instance; active: ClientID[]; }; type RoomMessage = Extract<BroadcastMessage, { type: 'room'; }>; export type RoomListener = (message: RoomMessage) => void; export declare class Messenger { uid: `${string}-${string}-${string}-${string}-${string}`; store: <T>(callback: (store: import("./store.js").RedisStore<{ instances: Registry; }>) => Promise<T>) => Promise<T>; clients: Record<ClientID, WebSocketClient>; orders: Record<ClientID, number>; messenger: Bus; roomListeners: Record<string, RoomListener>; constructor(); hasClient(client: ClientID): boolean; setRoomListener(room: string, callback: RoomListener): void; removeRoomListener(room: string): void; addClient(client: WebSocketClient): void; removeClient(uid: ClientID): void; registerRoom(uid: string): Promise<void>; unregisterRoom(uid: string): Promise<void>; getLocalClients(): Promise<ClientID[]>; getGlobalClients(): Promise<ClientID[]>; pruneDeadInstances(): Promise<RegistrySnapshot>; sendRoom(room: string, message: Omit<RoomMessage, 'type' | 'room'>): void; sendClient(client: ClientID, message: Omit<ServerMessage, 'order'>): void; terminateClient(client: ClientID): void; sendError(client: ClientID, error: ServerError): void; handleError(client: ClientID, error: unknown, action?: ServerError['trigger']): void; } export {};