@tai-kun/surrealdb
Version:
The SurrealDB SDK for JavaScript
61 lines • 2.05 kB
TypeScript
import type Client from "@tai-kun/surrealdb/basic-client";
import type { EngineEventMap } from "@tai-kun/surrealdb/engine";
import { TaskEmitter } from "@tai-kun/surrealdb/utils";
export type AutoReconnectEventMap = {
enqueue: [endpoint: URL];
pending: [endpoint: URL, duration: number];
connect: [endpoint: URL];
success: [endpoint: URL];
failure: [endpoint: URL, error: unknown];
error: [error: unknown];
};
export interface AutoReconnectOptions {
readonly backoffLimit?: number | undefined;
readonly initialDelay?: number | undefined;
readonly maxDelay?: number | undefined;
readonly shouldReconnect?: {
readonly ping?: {
readonly threshold: number;
readonly perMillis: number;
} | undefined;
} | ((...args: EngineEventMap["error"]) => boolean) | undefined;
}
export type ReconnectionInfo = {
state: "waiting";
phase: "waiting" | "pending";
} | {
state: "running";
phase: "closing" | "connecting";
} | {
state: "success";
phase: "pending" | "succeeded";
} | {
state: "failure";
phase: "pending" | "failed";
};
export type ReconnectionState = ReconnectionInfo["state"];
export type ReconnectionPhase = ReconnectionInfo["phase"];
declare class AutoReconnect extends TaskEmitter<AutoReconnectEventMap> {
readonly db: Client;
readonly maxDelay: number;
readonly backoffLimit: number;
readonly initialDelay: number;
readonly shouldReconnect: (...args: EngineEventMap["error"]) => boolean;
private _enabled;
private _counter;
private _info;
constructor(db: Client, options?: AutoReconnectOptions | undefined);
getReconnectionInfo(): ReconnectionInfo;
get state(): ReconnectionState;
get phase(): ReconnectionPhase;
get enabled(): boolean;
enable(): void;
disable(): void;
reset(): void;
}
/**
* @experimental
*/
export default function autoReconnect(...args: ConstructorParameters<typeof AutoReconnect>): AutoReconnect;
export {};
//# sourceMappingURL=auto-reconnect.d.ts.map