UNPKG

@adonisjs/http-server

Version:

AdonisJS HTTP server with support packed with Routing and Cookies

38 lines (37 loc) 1.37 kB
import type { ContainerResolver } from '@adonisjs/fold'; import type { Constructor, NextFn } from './base.js'; import type { HttpContext } from '../http_context/main.js'; /** * Middleware represented as a class */ export type MiddlewareAsClass = Constructor<{ handle: (ctx: HttpContext, next: NextFn, args?: any) => any; }>; /** * Check if a union has undefined or null */ type HasUndefined<T> = T extends NonNullable<T> ? true : false; /** * Returns the arguments accepted by the middleware's handle method */ export type GetMiddlewareArgs<Middleware extends MiddlewareAsClass> = Parameters<InstanceType<Middleware>['handle']>[2] extends undefined ? [] : HasUndefined<Parameters<InstanceType<Middleware>['handle']>[2]> extends true ? [Parameters<InstanceType<Middleware>['handle']>[2]] : [Parameters<InstanceType<Middleware>['handle']>[2]?]; /** * The middleware defined as a function on the router or the server */ export type MiddlewareFn = (ctx: HttpContext, next: NextFn) => any; /** * Parsed global middleware */ export type ParsedGlobalMiddleware = { name?: string; handle: (resolver: ContainerResolver<any>, ...args: [ctx: HttpContext, next: NextFn, params?: any]) => any; }; /** * Parsed named middleware */ export type ParsedNamedMiddleware = { name: string; handle: ParsedGlobalMiddleware['handle']; args: any; }; export {};