66 lines
2.3 KiB
Plaintext
66 lines
2.3 KiB
Plaintext
import { StatusCode } from "../../utils/http-status.js";
|
|
import { MiddlewareHandler, TypedResponse } from "../../types.js";
|
|
import { Context } from "../../context.js";
|
|
//#region src/helper/websocket/index.d.ts
|
|
/**
|
|
* WebSocket Event Listeners type
|
|
*/
|
|
export interface WSEvents<T = unknown> {
|
|
onOpen?: (evt: Event, ws: WSContext<T>) => void;
|
|
onMessage?: (evt: MessageEvent<WSMessageReceive>, ws: WSContext<T>) => void;
|
|
onClose?: (evt: CloseEvent, ws: WSContext<T>) => void;
|
|
onError?: (evt: Event, ws: WSContext<T>) => void;
|
|
}
|
|
/**
|
|
* Upgrade WebSocket Type
|
|
*/
|
|
export interface UpgradeWebSocket<T = unknown, U = any, _WSEvents = WSEvents<T>> {
|
|
(createEvents: (c: Context) => _WSEvents | Promise<_WSEvents>, options?: U): MiddlewareHandler<any, string, {
|
|
outputFormat: 'ws';
|
|
}>;
|
|
(c: Context, events: _WSEvents, options?: U): Promise<Response & TypedResponse<{}, StatusCode, 'ws'>>;
|
|
}
|
|
/**
|
|
* ReadyState for WebSocket
|
|
*/
|
|
export type WSReadyState = 0 | 1 | 2 | 3;
|
|
/**
|
|
* An argument for WSContext class
|
|
*/
|
|
export interface WSContextInit<T = unknown> {
|
|
send(data: string | ArrayBuffer | Uint8Array<ArrayBuffer>, options: SendOptions): void;
|
|
close(code?: number, reason?: string): void;
|
|
raw?: T;
|
|
readyState: WSReadyState;
|
|
url?: string | URL | null;
|
|
protocol?: string | null;
|
|
}
|
|
/**
|
|
* Options for sending message
|
|
*/
|
|
export interface SendOptions {
|
|
compress?: boolean;
|
|
}
|
|
/**
|
|
* A context for controlling WebSockets
|
|
*/
|
|
export declare class WSContext<T = unknown> {
|
|
|
|
constructor(init: WSContextInit<T>);
|
|
send(source: string | ArrayBuffer | Uint8Array<ArrayBuffer>, options?: SendOptions): void;
|
|
raw?: T;
|
|
binaryType: BinaryType;
|
|
get readyState(): WSReadyState;
|
|
url: URL | null;
|
|
protocol: string | null;
|
|
close(code?: number, reason?: string): void;
|
|
}
|
|
export type WSMessageReceive = string | Blob | ArrayBufferLike;
|
|
export declare const createWSMessageEvent: (source: WSMessageReceive) => MessageEvent<WSMessageReceive>;
|
|
export interface WebSocketHelperDefineContext {}
|
|
export type WebSocketHelperDefineHandler<T, U> = (c: Context, events: WSEvents<T>, options?: U) => Promise<Response | void> | Response | void;
|
|
/**
|
|
* Create a WebSocket adapter/helper
|
|
*/
|
|
export declare const defineWebSocketHelper: <T = unknown, U = any>(handler: WebSocketHelperDefineHandler<T, U>) => UpgradeWebSocket<T, U>;
|
|
//#endregion |