import { Context } from './context' /* next's parameter is in a contravariant position, and thus, trying to type it prevents assigning `MiddlewareFn` to `MiddlewareFn`. Middleware passing the parameter should be a separate type instead. */ export type MiddlewareFn = ( ctx: C, next: () => Promise // eslint-disable-next-line @typescript-eslint/no-invalid-void-type ) => Promise | void export interface MiddlewareObj { middleware: () => MiddlewareFn } export type Middleware = MiddlewareFn | MiddlewareObj