socio
Version:
A WebSocket Real-Time Communication (RTC) API framework.
51 lines (50 loc) • 1.95 kB
TypeScript
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;
}