@triplit/client
Version:
41 lines (40 loc) • 1.76 kB
TypeScript
import { ClientSyncMessage, CloseReason } from '../../@triplit/types/sync.js';
/**
* Possible values reflect the WebSocket readyState: https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/readyState
*
* - CONNECTING: An attempt to connect is being made
* - OPEN: The connection is open and ready to communicate
* - CLOSING: The connection is in the process of closing
* - CLOSED: The connection is closed or couldn't be opened
*/
export type ConnectionStatus = 'UNINITIALIZED' | 'CONNECTING' | 'OPEN' | 'CLOSING' | 'CLOSED';
export interface SyncTransport {
isOpen: boolean;
connectionStatus: ConnectionStatus;
/**
* Sends a message to the server. If the message could not be sent, this should return false. If successfully sent, this should return true.
*/
sendMessage(message: ClientSyncMessage): boolean;
/**
* Connect to the server with the given parameters. If this transport is already connected, it should close the existing connection and open a new one.
*/
connect(params: TransportConnectParams): void;
/**
* Closes the connection to the server. If the transport is not connected, this should be a no op.
*/
close(reason?: CloseReason): void;
onClose(callback: (ev: any) => void): void;
/**
* @deprecated Triplit Client now manages its own connection state, so this is no longer needed.
*/
onConnectionChange(callback: (state: ConnectionStatus) => void): void;
onError(callback: (ev: any) => void): void;
onMessage(callback: (message: any) => void): void;
onOpen(callback: (ev: any) => void): void;
}
export type TransportConnectParams = {
server: string;
token: string;
schema: number | undefined;
syncSchema?: boolean;
};