UNPKG

@elysiajs/node

Version:

Elysia adapter to run Elysia on Node.js

40 lines (39 loc) 1.68 kB
import { Peer, WSError } from 'crossws'; import { Context, type AnyElysia } from 'elysia'; import { ElysiaTypeCheck } from 'elysia/schema'; import { ElysiaWS } from 'elysia/ws'; import type { ServerWebSocket } from 'elysia/ws/bun'; import type { AnyWSLocalHook } from 'elysia/ws/types'; export interface NodeWebSocketContext { data: Context; validateResponse: ElysiaTypeCheck<any> | undefined; ping: ElysiaWS['ping']; pong: ElysiaWS['pong']; open(ws: Peer): Promise<void>; message(ws: ServerWebSocket<any>, message: string): Promise<void>; drain(ws: ServerWebSocket<any>): Promise<void>; close(ws: ServerWebSocket<any>, code: number, reason: string): Promise<void>; error(ws: ServerWebSocket<any>, error: WSError): void; } export interface NodeWebSocketPeer extends Omit<Peer, 'context'> { context: NodeWebSocketContext; } export declare function createWebSocketAdapter(): { handler: (app: AnyElysia, path: string, options: AnyWSLocalHook) => void; createConfig: (app: AnyElysia) => { upgrade(request: Request & { readonly context?: Record<string, unknown>; }): Promise<Response | { context: any; headers: any; }>; open(ws: Peer<import("crossws").AdapterInternal>): void; message(ws: Peer<import("crossws").AdapterInternal>, message: import("crossws").Message): void; close(ws: Peer<import("crossws").AdapterInternal>, detail: { code?: number; reason?: string; }): void; error(ws: Peer<import("crossws").AdapterInternal>, error: WSError): void; }; context: Record<string, NodeWebSocketContext>; };