@tai-kun/surrealdb
Version:
The SurrealDB SDK for JavaScript
28 lines • 1.4 kB
TypeScript
import { type CloseArgs, type ConnectArgs, EngineAbc, type EngineAbcConfig, type RpcArgs } from "@tai-kun/surrealdb/engine";
import type { BidirectionalRpcResponse } from "@tai-kun/surrealdb/types";
import { Serial } from "@tai-kun/surrealdb/utils";
import type { Promisable } from "type-fest";
import type { WebSocket as WsWebSocket } from "ws";
type InferWebSocket<T> = T extends {
readonly WebSocket: new (...args: any) => infer W;
} ? W : never;
type NativeWebSocket = InferWebSocket<typeof global | typeof window | typeof self>;
type WebSocket = WsWebSocket | NativeWebSocket;
export type CreateWebSocket = (address: URL, protocols: string[]) => Promisable<WebSocket>;
export interface WebSocketEngineConfig extends EngineAbcConfig {
readonly createWebSocket: CreateWebSocket;
readonly pingInterval?: number | (() => number) | undefined;
}
export default class WebSocketEngine extends EngineAbc {
readonly name = "websocket";
protected ws: WebSocket | null;
protected readonly id: Serial;
protected readonly newWs: CreateWebSocket;
protected readonly pingInterval: () => number;
constructor(config: WebSocketEngineConfig);
connect({ endpoint, signal }: ConnectArgs): Promise<void>;
close({ signal }: CloseArgs): Promise<void>;
rpc({ request, signal }: RpcArgs): Promise<BidirectionalRpcResponse>;
}
export {};
//# sourceMappingURL=engine.d.ts.map