import type { ElysiaWS } from './index'; import { WebSocketHandler } from './bun'; import type { Context } from '../context'; import { AfterResponseHandler, BaseMacro, DocumentDecoration, ErrorHandler, MapResponse, MaybeArray, MaybePromise, OptionalHandler, Prettify, RouteSchema, SingletonBase, TransformHandler } from '../types'; type TypedWebSocketMethod = 'open' | 'message' | 'drain' | 'close' | 'ping' | 'pong'; export type FlattenResponse = {} extends Response ? unknown : Response[keyof Response]; interface TypedWebSocketHandler extends Omit, TypedWebSocketMethod> { open?(ws: Prettify & { body: never; }>>): MaybePromise | void>; message?(ws: Prettify>, message: Route['body']): MaybePromise | void | Generator, void | FlattenResponse> | AsyncGenerator, void | FlattenResponse>>; drain?(ws: Prettify & { body: never; }>>): MaybePromise | void | Generator, void | FlattenResponse> | AsyncGenerator, void | FlattenResponse>>; close?(ws: Prettify & { body: never; }>>, code: number, reason: string): MaybePromise | void | Generator, void | FlattenResponse> | AsyncGenerator, void | FlattenResponse>>; ping?(ws: Prettify>, message: Route['body']): MaybePromise | void | Generator, void | FlattenResponse> | AsyncGenerator, void | FlattenResponse>>; pong?(ws: Prettify>, message: Route['body']): MaybePromise | void | Generator, void | FlattenResponse> | AsyncGenerator, void | FlattenResponse>>; } export type WSParseHandler = (ws: Prettify & { body: unknown; }>>, message: unknown) => MaybePromise; export type AnyWSLocalHook = WSLocalHook; export type WSLocalHook = Prettify & { detail?: DocumentDecoration; /** * Headers to register to websocket before `upgrade` */ upgrade?: Record | ((context: Context) => unknown); parse?: MaybeArray>; /** * Transform context's value */ transform?: MaybeArray>; /** * Execute before main handler */ beforeHandle?: MaybeArray>; /** * Execute after main handler */ afterHandle?: MaybeArray>; /** * Execute after main handler */ mapResponse?: MaybeArray>; /** * Execute after response is sent */ afterResponse?: MaybeArray>; /** * Catch error */ error?: MaybeArray>; tags?: DocumentDecoration['tags']; } & TypedWebSocketHandler, 'body'> & { body: never; }, Schema>; export {};