UNPKG

node-jet

Version:

Jet Realtime Message Bus for the Web. Daemon and Peer implementation.

78 lines (77 loc) 2.95 kB
import { Logger, type logger } from '../log.js'; import type { AddRequest, AuthParams, FetchParams, PathParams, SetParams, UserParams } from '../messages.js'; import { Subscription } from './subscription.js'; import { Route } from './route.js'; import type JsonRPC from '../../2_jsonrpc/index.js'; import { JsonRPCServer } from '../../2_jsonrpc/server.js'; import type { WebServerConfig } from '../../1_socket/wsserver.js'; import type { TCPServerConfig } from '../../1_socket/tcpserver.js'; import { EventEmitter } from '../../1_socket/index.js'; import { UserManager } from './UserManager.js'; interface Features { authenticate?: boolean; batches?: boolean; fetch?: 'full' | 'simple'; asNotification?: boolean; } export interface InfoOptions { protocolVersion?: string; version?: string; name?: string; features?: Features; } declare class InfoObject implements InfoOptions { name: string; version: string; protocolVersion: string; features: Features; constructor(options: InfoOptions, authenticate: boolean); } interface DaemonOptions { log?: logger; username?: string; password?: string; } /** * Creates a Daemon instance * * In most cases you need one Jet Daemon instance running. * All Peers connect to it as in typical master(Daemon) slave(Peer) * architectures. * */ export declare class Daemon extends EventEmitter { infoObject: InfoObject; log: Logger; jsonRPCServer: JsonRPCServer; routes: Record<string, Route>; subscriber: Subscription[]; authenticator: UserManager; /** * Constructor for creating the instance * @param {DaemonOptions & InfoOptions} [options] Options for the daemon creation */ constructor(options?: DaemonOptions & InfoOptions); asNotification: () => boolean | undefined; simpleFetch: () => boolean; respond: (peer: JsonRPC, id: string) => void; authenticate: (peer: JsonRPC, id: string, params: AuthParams) => void; addUser: (peer: JsonRPC, id: string, params: UserParams) => void; add: (peer: JsonRPC, id: string, params: AddRequest) => void; change: (peer: JsonRPC, id: string, msg: SetParams) => void; fetch: (peer: JsonRPC, id: string, msg: FetchParams) => void; unfetch: (peer: JsonRPC, id: string, params: FetchParams) => void; get: (peer: JsonRPC, id: string, params: FetchParams) => void; remove: (peer: JsonRPC, id: string, params: PathParams) => void; forward: (method: "set" | "call", user: string, params: PathParams) => Promise<import("../types.js").ValueType>; info: (peer: JsonRPC, id: string) => void; configure: (peer: JsonRPC, id: string) => void; filterRoutesByPeer: (peer: JsonRPC) => string[]; /** * This function starts to listen on the specified port * @param listenOptions */ listen: (listenOptions?: TCPServerConfig & WebServerConfig) => void; close: () => void; } export default Daemon;