@mochabug/adapt-web
Version:
The client library to execute automations, without effort, in a browser environment
60 lines (59 loc) • 1.96 kB
TypeScript
import type { Output as OutputMessage, Session, SessionJson, Session as SessionMessage, StatusJson, Url, UrlJson, Url as UrlMessage } from "./genproto/mochabugapis/adapt/automations/v1/automations_pb.js";
import { Status } from "./genproto/mochabugapis/adapt/automations/v1/automations_pb.js";
import type { SignalData } from "./genproto/mochabugapis/adapt/graph/signal_data_pb.js";
export type { OutputMessage, Session, SessionJson, SessionMessage, SignalData, Status, StatusJson, Url, UrlJson, UrlMessage, };
export interface Output {
vertex: string;
fork: string;
data: {
[key: string]: SignalData;
};
created?: Date;
}
export interface MessageHandlers {
onOutput?: (output: Output) => void;
onSession?: (session: SessionJson) => void;
onUrl?: (url: UrlJson) => void;
}
export interface SubscriptionOptions extends MessageHandlers {
sessionToken: string;
id: string;
debug?: boolean;
}
export declare enum ConnectionState {
DISCONNECTED = "disconnected",
CONNECTING = "connecting",
CONNECTED = "connected",
CLOSING = "closing"
}
export interface SessionInfo {
id: string;
token: string;
}
export declare class PubsubClient {
private state;
private sessionInfo;
private readonly logger;
private readonly ackTracker;
private readonly reconnectManager;
private readonly wsManager;
private messageProcessor;
private shouldReconnect;
private sessionComplete;
constructor(debug?: boolean);
subscribe(opts: SubscriptionOptions): Promise<void>;
unsubscribe(): Promise<void>;
isConnected(): boolean;
getConnectionState(): ConnectionState;
getSessionInfo(): SessionInfo;
private connect;
private handleOpen;
private handleMessage;
private handleClose;
private handleError;
private analyzeCloseCode;
private scheduleReconnect;
private cleanup;
private isSameSession;
private updateHandlers;
}