@directus/api
Version:
Directus is a real-time API and App dashboard for managing SQL database content
39 lines (38 loc) • 1.23 kB
TypeScript
import type { Accountability, Query } from '@directus/types';
import type { IncomingMessage } from 'http';
import type internal from 'stream';
import type { WebSocket } from 'ws';
import type { AuthMode } from './messages.js';
export type AuthenticationState = {
accountability: Accountability | null;
expires_at: number | null;
refresh_token?: string;
};
export type WebSocketClient = WebSocket & AuthenticationState & {
uid: string | number;
auth_timer: NodeJS.Timeout | null;
};
export type UpgradeRequest = IncomingMessage & AuthenticationState;
export type WebSocketAuthentication = {
mode: AuthMode;
timeout: number;
};
export type SubscriptionEvent = 'create' | 'update' | 'delete';
export type Subscription = {
uid?: string | number;
query?: Query;
item?: string | number;
event?: SubscriptionEvent;
collection: string;
client: WebSocketClient;
};
export type UpgradeContext = {
request: IncomingMessage;
socket: internal.Duplex;
head: Buffer;
accountabilityOverrides: Pick<Accountability, 'ip' | 'userAgent' | 'origin'>;
};
export type GraphQLSocket = {
client: WebSocketClient;
};
export type LogsSubscription = Record<string, Set<WebSocketClient>>;