UNPKG

socio

Version:

A WebSocket Real-Time Communication (RTC) API framework.

51 lines (50 loc) 1.95 kB
import { LogHandler } from './logging.js'; import { RateLimiter } from './ratelimit.js'; import { ClientMessageKind } from './utils.js'; import type { WebSocket } from 'ws'; import type { id, Bit, LoggingOpts, SessionOpts, ServerLifecycleHooks } from './types.d.ts'; import type { RateLimit } from './ratelimit.js'; export type SubObj = { tables: string[]; sql: string; params?: object; rate_limiter?: RateLimiter; cache_hash: number; }; export type SocioSessionOptions = { default_perms?: Map<string, string[]>; session_opts?: SessionOpts; name?: string; } & LoggingOpts; export declare class SocioSession extends LogHandler { #private; verbose: boolean; last_seen: number; session_opts: SessionOpts; name?: string; constructor(client_id: string, ws_client: WebSocket, client_ipAddr: string, { logging, default_perms, session_opts, name }?: SocioSessionOptions); get web_socket(): WebSocket; get id(): string; get ipAddr(): string; Send(kind: ClientMessageKind, ...data: any[]): Promise<void> | void; RegisterSub(tables: string[], id: id, sql: string, params?: object, rate_limit?: RateLimit): void; UnRegisterSub(id: id): Bit; GetSubsForTables(tables?: string[]): Generator<{ id: id; tables: string[]; sql: string; params?: object; rate_limiter?: RateLimiter; cache_hash: number; }, void, unknown>; get authenticated(): boolean; Authenticate(auth_func: ServerLifecycleHooks['auth'], params?: object | null): Promise<boolean>; HasPermFor(verb?: string, table?: string): boolean | undefined; AddPermFor(verb?: string, table?: string): void; last_seen_now(): void; CloseConnection(code?: number): void; Destroy(remove_session_callback: Function, ttl_ms: number, force?: boolean): void; Restore(): void; ClearSubs(): void; CopySessionFrom(old_client: SocioSession): void; }