UNPKG

tsdk-server-adapters

Version:

[![NPM version](https://badge.fury.io/js/tsdk-server-adapters.svg)](https://www.npmjs.com/package/tsdk-server-adapters) [![install size](https://packagephobia.com/badge?p=tsdk-server-adapters)](https://packagephobia.com/result?p=tsdk-server-adapters) ![Do

55 lines (54 loc) 1.98 kB
import EventEmitter from 'eventemitter3'; import type { Response } from 'express'; import type { Context } from 'hono'; import type { Socket } from 'socket.io'; import type { WebSocket } from 'ws'; import type { ZodTypeAny } from 'zod'; export declare const PROTOCOLs: { /** express.js */ readonly express: "express"; /** honojs */ readonly hono: "hono"; readonly 'socket.io': "io"; /** @deprecated not recommend */ readonly ws: "ws"; }; export type Protocol = keyof typeof PROTOCOLs; export declare const PROTOCOL_KEYs: string[]; type ResponseSocket = Response | Context | Socket | WebSocket; interface BasicAPIConfig { method: string; path: string; type: string; schema?: ZodTypeAny; } export interface ObjectLiteral { [key: string]: any; } export interface ProtocolType { request: string; response: string; } export declare function getRouteEventName(config: Pick<BasicAPIConfig, 'type' | 'method' | 'path'> & { protocol: Protocol; }): string; declare function sendFactory(protocol: Protocol, response: ResponseSocket, protocolType: ProtocolType, callback?: (result: any) => void): (payload: { _id: string; status?: number; result?: unknown; callback?: Function; }) => void; export declare function genRouteFactory<APIConfig, RequestInfo>(onErrorHandler: (error: unknown, params: { protocol: Protocol; msgId: string; send: ReturnType<typeof sendFactory>; config: APIConfig; payload?: any; }) => void, protocolType: ProtocolType, middlewares?: ((protocol: Protocol, apiConfig: APIConfig & BasicAPIConfig, reqInfo: RequestInfo) => Promise<any>)[], /** API types */ types?: string[]): { routeBus: EventEmitter<string | symbol, any>; genRoute: <ReqData, ResData>(apiConfig: APIConfig & BasicAPIConfig, cb: (data: ReqData, reqInfo: Readonly<RequestInfo>, resOrSocket?: ResponseSocket) => Promise<ResData>) => void; getRouteEventName: typeof getRouteEventName; }; export {};