yup-server
Version:
A lightweight server that uses the amazing Yup library for validation
49 lines (48 loc) • 2 kB
TypeScript
/// <reference types="node" />
import * as yup from "yup";
import http, { IncomingMessage, ServerResponse } from "node:http";
declare type Context<User = any, Body = any, Query = any, Params = any> = {
user: User;
body: Body;
query: Query;
params: Params;
};
declare type RequestHandlerFunction<T extends Context = Context> = (params: {
ctx: T;
req: http.IncomingMessage;
res: http.ServerResponse;
}) => any;
declare type RequestHandler<T extends Context = Context> = {
handler: RequestHandlerFunction<T>;
bodySchema?: yup.AnySchema;
paramsSchema?: yup.AnySchema;
querySchema?: yup.AnySchema;
responseSchema?: yup.AnySchema;
};
declare type HTTPMethod = "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
declare type Route<T extends Context = Context> = {
pattern: RegExp;
"*"?: RequestHandler<T>;
GET?: RequestHandler<T>;
PUT?: RequestHandler<T>;
PATCH?: RequestHandler<T>;
POST?: RequestHandler<T>;
DELETE?: RequestHandler<T>;
};
/**
* Generate a request handler function suitable for use with http.createServer()
*/
declare function createServer(routes: Route[]): (req: IncomingMessage, res: ServerResponse) => Promise<void>;
declare type ConnectMiddleware = <Req = IncomingMessage, Res = ServerResponse>(req: Req, res: Res, next: (err?: unknown) => void) => void;
declare type ConnectMiddlewareErrorHandler = (err: unknown) => any;
/**
* Generate a request handler function that will execute connect-style middleware.
*
* @param connectMiddleware The middleware to execute
* @param errorHandler The error handler to execute if the middleware returns an error
*
* @returns A request handler function
*
*/
declare function useConnectMiddleware(connectMiddleware: ConnectMiddleware, errorHandler?: ConnectMiddlewareErrorHandler): RequestHandlerFunction;
export { ConnectMiddleware, ConnectMiddlewareErrorHandler, Context, HTTPMethod, RequestHandler, RequestHandlerFunction, Route, useConnectMiddleware, createServer, };