import type { Server } from './universal/server'; import type { Cookie, ElysiaCookie } from './cookies'; import type { StatusMap, InvertedStatusMap, redirect as Redirect } from './utils'; import { ElysiaCustomStatusResponse, status, type SelectiveStatus } from './error'; import type { RouteSchema, Prettify, ResolvePath, SingletonBase, HTTPHeaders, InputSchema } from './types'; type InvertedStatusMapKey = keyof InvertedStatusMap; type CheckExcessProps = 0 extends 1 & T ? T : U extends U ? Exclude extends never ? T : { [K in keyof U]: U[K]; } & { [K in Exclude]: never; } : never; export type ErrorContext = Prettify<{ body: Route['body']; query: undefined extends Route['query'] ? Record : Route['query']; params: undefined extends Route['params'] ? Path extends `${string}/${':' | '*'}${string}` ? ResolvePath : { [key in string]: string; } : Route['params']; headers: undefined extends Route['headers'] ? Record : Route['headers']; cookie: undefined extends Route['cookie'] ? Record> : Record> & { [key in keyof Route['cookie']]-?: NonNullable>; }; server: Server | null; redirect: Redirect; set: { headers: HTTPHeaders; status?: number | keyof StatusMap; redirect?: string; /** * ! Internal Property * * Use `Context.cookie` instead */ cookie?: Record; }; status: {} extends Route['response'] ? typeof status : ], T extends Code extends keyof Route['response'] ? Route['response'][Code] : Code extends keyof StatusMap ? Route['response'][StatusMap[Code]] : never>(code: Code, response: CheckExcessProps) => ElysiaCustomStatusResponse; /** * Path extracted from incoming URL * * Represent a value extracted from URL * * @example '/id/9' */ path: string; /** * Path as registered to router * * Represent a path registered to a router, not a URL * * @example '/id/:id' */ route: string; request: Request; store: Singleton['store']; } & Singleton['decorator'] & Singleton['derive'] & Singleton['resolve']>; type PrettifyIfObject = T extends object ? Prettify : T; export type Context = Prettify<{ body: PrettifyIfObject; query: undefined extends Route['query'] ? {} extends NonNullable ? Record : Singleton['resolve']['query'] : PrettifyIfObject; params: undefined extends Route['params'] ? undefined extends Path ? {} extends NonNullable ? Record : Singleton['resolve']['params'] : Path extends `${string}/${':' | '*'}${string}` ? ResolvePath : never : PrettifyIfObject; headers: undefined extends Route['headers'] ? {} extends NonNullable ? Record : Singleton['resolve']['headers'] : PrettifyIfObject; cookie: undefined extends Route['cookie'] ? Record> : Record> & Prettify<{ [key in keyof Route['cookie']]-?: Cookie; } & { [key in keyof Singleton['resolve']['cookie']]-?: Cookie; }>; server: Server | null; redirect: Redirect; set: { headers: HTTPHeaders; status?: number | keyof StatusMap; /** * @deprecated Use inline redirect instead * * @example Migration example * ```ts * new Elysia() * .get(({ redirect }) => redirect('/')) * ``` */ redirect?: string; /** * ! Internal Property * * Use `Context.cookie` instead */ cookie?: Record; }; /** * Path extracted from incoming URL * * Represent a value extracted from URL * * @example '/id/9' */ path: string; /** * Path as registered to router * * Represent a path registered to a router, not a URL * * @example '/id/:id' */ route: string; request: Request; store: Singleton['store']; status: {} extends Route['response'] ? typeof status : SelectiveStatus; } & Singleton['decorator'] & Singleton['derive'] & Omit>; export type PreContext = Prettify<{ store: Singleton['store']; request: Request; redirect: Redirect; server: Server | null; set: { headers: HTTPHeaders; status?: number; redirect?: string; }; status: typeof status; } & Singleton['decorator']>; export {};