@velascosoftware/next-api-router
Version:
46 lines (39 loc) • 2 kB
text/typescript
import { NextRequest, NextResponse } from 'next/server';
type ErrorHandler = (error: unknown, req: NextRequest, params: Record<string, string>) => Promise<NextResponse> | NextResponse;
interface ApiRouteController {
[key: string]: any;
}
declare class ApiRouter {
private routes;
private basePath;
private globalErrorHandler;
constructor(basePath: string | undefined, controller: ApiRouteController);
onError(handler: ErrorHandler): void;
handle(req: NextRequest): Promise<NextResponse>;
}
type HTTP_METHOD = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'HEAD';
type NextHandler$1 = () => Promise<NextResponse> | NextResponse;
type Middleware = (req: NextRequest, ctx: Record<string, unknown>, next: NextHandler$1) => Promise<NextResponse> | NextResponse;
interface RouteDefinition {
path: string;
method: HTTP_METHOD;
handlerName: string;
}
declare function RequestMapping(path: string, method: HTTP_METHOD): (target: any, propertyKey: string) => void;
declare function Use(...middlewares: Middleware[]): (target: any, propertyKey: string) => void;
declare function UseController(...middlewares: Middleware[]): (constructor: any) => void;
declare function getRoutes(target: any): RouteDefinition[];
declare function getControllerMiddlewares(target: any): Middleware[];
declare function getRouteMiddlewares(target: any): Record<string, Middleware[]>;
type NextHandler = (req: NextRequest) => Promise<Response> | Response;
type RouterRecords = {
GET: NextHandler;
POST: NextHandler;
PUT: NextHandler;
PATCH: NextHandler;
DELETE: NextHandler;
OPTIONS: NextHandler;
HEAD: NextHandler;
};
declare function createNextRoute(controller: ApiRouteController, basePath?: string): RouterRecords;
export { type ApiRouteController, ApiRouter, type Middleware, type NextHandler$1 as NextHandler, RequestMapping, type RouteDefinition, Use, UseController, createNextRoute, getControllerMiddlewares, getRouteMiddlewares, getRoutes };