node-jet
Version:
Jet Realtime Message Bus for the Web. Daemon and Peer implementation.
78 lines (77 loc) • 2.95 kB
TypeScript
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;