- Consolidated duplicate UndoManagers to single instance - Fixed connection promise to only resolve on 'connected' status - Fixed WebSocketProvider import (WebsocketProvider) - Added proper doc.destroy() cleanup - Renamed isPresenceInitialized property to avoid conflict Co-Authored-By: Paperclip <noreply@paperclip.ing>
206 lines
6.7 KiB
TypeScript
206 lines
6.7 KiB
TypeScript
import { TRPCConnectionState } from "./subscriptions.d-Ciljg_dH.cjs";
|
|
import { Operation, OperationResultEnvelope, TRPCClientError, TRPCLink } from "./types.d-Dmmedc5G.cjs";
|
|
import { TransformerOptions } from "./unstable-internals.d-kWsZTlQq.cjs";
|
|
import { AnyRouter, CombinedDataTransformer, inferClientTypes } from "@trpc/server/unstable-core-do-not-import";
|
|
import * as _trpc_server_observable0 from "@trpc/server/observable";
|
|
import { BehaviorSubject } from "@trpc/server/observable";
|
|
import { AnyTRPCRouter } from "@trpc/server";
|
|
import { Encoder } from "@trpc/server/adapters/ws";
|
|
import { TRPCRequestInfo } from "@trpc/server/http";
|
|
|
|
//#region src/links/wsLink/wsClient/encoder.d.ts
|
|
declare const jsonEncoder: Encoder;
|
|
//# sourceMappingURL=encoder.d.ts.map
|
|
|
|
//#endregion
|
|
//#region src/links/internals/urlWithConnectionParams.d.ts
|
|
/**
|
|
* A value that can be wrapped in callback
|
|
*/
|
|
type CallbackOrValue<T> = T | (() => T | Promise<T>);
|
|
interface UrlOptionsWithConnectionParams {
|
|
/**
|
|
* The URL to connect to (can be a function that returns a URL)
|
|
*/
|
|
url: CallbackOrValue<string>;
|
|
/**
|
|
* Connection params that are available in `createContext()`
|
|
* - For `wsLink`/`wsClient`, these are sent as the first message
|
|
* - For `httpSubscriptionLink`, these are serialized as part of the URL under the `connectionParams` query
|
|
*/
|
|
connectionParams?: CallbackOrValue<TRPCRequestInfo['connectionParams']>;
|
|
}
|
|
//# sourceMappingURL=urlWithConnectionParams.d.ts.map
|
|
//#endregion
|
|
//#region src/links/wsLink/wsClient/options.d.ts
|
|
interface WebSocketClientOptions extends UrlOptionsWithConnectionParams {
|
|
/**
|
|
* Ponyfill which WebSocket implementation to use
|
|
*/
|
|
WebSocket?: typeof WebSocket;
|
|
/**
|
|
* The number of milliseconds before a reconnect is attempted.
|
|
* @default {@link exponentialBackoff}
|
|
*/
|
|
retryDelayMs?: (attemptIndex: number) => number;
|
|
/**
|
|
* Triggered when a WebSocket connection is established
|
|
*/
|
|
onOpen?: () => void;
|
|
/**
|
|
* Triggered when a WebSocket connection encounters an error
|
|
*/
|
|
onError?: (evt?: Event) => void;
|
|
/**
|
|
* Triggered when a WebSocket connection is closed
|
|
*/
|
|
onClose?: (cause?: {
|
|
code?: number;
|
|
}) => void;
|
|
/**
|
|
* Lazy mode will close the WebSocket automatically after a period of inactivity (no messages sent or received and no pending requests)
|
|
*/
|
|
lazy?: {
|
|
/**
|
|
* Enable lazy mode
|
|
* @default false
|
|
*/
|
|
enabled: boolean;
|
|
/**
|
|
* Close the WebSocket after this many milliseconds
|
|
* @default 0
|
|
*/
|
|
closeMs: number;
|
|
};
|
|
/**
|
|
* Send ping messages to the server and kill the connection if no pong message is returned
|
|
*/
|
|
keepAlive?: {
|
|
/**
|
|
* @default false
|
|
*/
|
|
enabled: boolean;
|
|
/**
|
|
* Send a ping message every this many milliseconds
|
|
* @default 5_000
|
|
*/
|
|
intervalMs?: number;
|
|
/**
|
|
* Close the WebSocket after this many milliseconds if the server does not respond
|
|
* @default 1_000
|
|
*/
|
|
pongTimeoutMs?: number;
|
|
};
|
|
/**
|
|
* Custom encoder for wire encoding (e.g. custom binary formats)
|
|
* @default jsonEncoder
|
|
*/
|
|
experimental_encoder?: Encoder;
|
|
}
|
|
/**
|
|
* Default options for lazy WebSocket connections.
|
|
* Determines whether the connection should be established lazily and defines the delay before closure.
|
|
*/
|
|
//#endregion
|
|
//#region src/links/wsLink/wsClient/wsClient.d.ts
|
|
/**
|
|
* A WebSocket client for managing TRPC operations, supporting lazy initialization,
|
|
* reconnection, keep-alive, and request management.
|
|
*/
|
|
declare class WsClient {
|
|
/**
|
|
* Observable tracking the current connection state, including errors.
|
|
*/
|
|
readonly connectionState: BehaviorSubject<TRPCConnectionState<TRPCClientError<AnyTRPCRouter>>>;
|
|
private allowReconnect;
|
|
private requestManager;
|
|
private readonly activeConnection;
|
|
private readonly reconnectRetryDelay;
|
|
private inactivityTimeout;
|
|
private readonly callbacks;
|
|
private readonly lazyMode;
|
|
private readonly encoder;
|
|
constructor(opts: WebSocketClientOptions);
|
|
/**
|
|
* Opens the WebSocket connection. Handles reconnection attempts and updates
|
|
* the connection state accordingly.
|
|
*/
|
|
private open;
|
|
/**
|
|
* Closes the WebSocket connection and stops managing requests.
|
|
* Ensures all outgoing and pending requests are properly finalized.
|
|
*/
|
|
close(): Promise<void>;
|
|
/**
|
|
* Method to request the server.
|
|
* Handles data transformation, batching of requests, and subscription lifecycle.
|
|
*
|
|
* @param op - The operation details including id, type, path, input and signal
|
|
* @param transformer - Data transformer for serializing requests and deserializing responses
|
|
* @param lastEventId - Optional ID of the last received event for subscriptions
|
|
*
|
|
* @returns An observable that emits operation results and handles cleanup
|
|
*/
|
|
request({
|
|
op: {
|
|
id,
|
|
type,
|
|
path,
|
|
input,
|
|
signal
|
|
},
|
|
transformer,
|
|
lastEventId
|
|
}: {
|
|
op: Pick<Operation, 'id' | 'type' | 'path' | 'input' | 'signal'>;
|
|
transformer: CombinedDataTransformer;
|
|
lastEventId?: string;
|
|
}): _trpc_server_observable0.Observable<OperationResultEnvelope<unknown, TRPCClientError<AnyTRPCRouter>>, TRPCClientError<AnyTRPCRouter>>;
|
|
get connection(): {
|
|
readonly id: number;
|
|
readonly state: "open";
|
|
readonly ws: WebSocket;
|
|
} | {
|
|
readonly id: number;
|
|
readonly state: "closed";
|
|
readonly ws: WebSocket;
|
|
} | {
|
|
readonly id: number;
|
|
readonly state: "connecting";
|
|
readonly ws: WebSocket;
|
|
} | null;
|
|
/**
|
|
* Manages the reconnection process for the WebSocket using retry logic.
|
|
* Ensures that only one reconnection attempt is active at a time by tracking the current
|
|
* reconnection state in the `reconnecting` promise.
|
|
*/
|
|
private reconnecting;
|
|
private reconnect;
|
|
private setupWebSocketListeners;
|
|
private handleResponseMessage;
|
|
private handleIncomingRequest;
|
|
/**
|
|
* Sends a message or batch of messages directly to the server.
|
|
*/
|
|
private send;
|
|
/**
|
|
* Groups requests for batch sending.
|
|
*
|
|
* @returns A function to abort the batched request.
|
|
*/
|
|
private batchSend;
|
|
}
|
|
//# sourceMappingURL=wsClient.d.ts.map
|
|
//#endregion
|
|
//#region src/links/wsLink/createWsClient.d.ts
|
|
declare function createWSClient(opts: WebSocketClientOptions): WsClient;
|
|
type TRPCWebSocketClient = ReturnType<typeof createWSClient>;
|
|
//#endregion
|
|
//#region src/links/wsLink/wsLink.d.ts
|
|
type WebSocketLinkOptions<TRouter extends AnyRouter> = {
|
|
client: TRPCWebSocketClient;
|
|
} & TransformerOptions<inferClientTypes<TRouter>>;
|
|
declare function wsLink<TRouter extends AnyRouter>(opts: WebSocketLinkOptions<TRouter>): TRPCLink<TRouter>;
|
|
//#endregion
|
|
export { Encoder, TRPCWebSocketClient, UrlOptionsWithConnectionParams, WebSocketClientOptions, WebSocketLinkOptions, createWSClient, jsonEncoder, wsLink };
|
|
//# sourceMappingURL=wsLink.d-DzZZZGZQ.d.cts.map
|