tsdk-server-adapters
Version:
[](https://www.npmjs.com/package/tsdk-server-adapters) [](https://packagephobia.com/result?p=tsdk-server-adapters) ![Do
55 lines (54 loc) • 1.98 kB
TypeScript
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 {};