UNPKG

@t3ned/channel

Version:

Ergonomic, chaining-based Typescript framework for quick API development for Fastify

282 lines 8.79 kB
import type { HTTPMethods, FastifyRequest, FastifyReply, onErrorHookHandler, onRequestHookHandler, onResponseHookHandler, onSendHookHandler, onTimeoutHookHandler, preHandlerHookHandler, preParsingHookHandler, preSerializationHookHandler, preValidationHookHandler } from "fastify"; import type { z, ZodTypeAny } from "zod"; import type { Application } from "./Application"; import { HttpStatus } from "../../constants"; export declare class Route<Params extends ZodTypeAny, Query extends ZodTypeAny, Body extends ZodTypeAny> { /** * The route path */ path: Route.Path; /** * The route method */ private _method; /** * The supported versions for the route */ private _versions; /** * The default http status for responses */ private _httpStatus; /** * The schema for the request params */ private _paramsSchema?; /** * The schema for the request query */ private _querySchema?; /** * The schema for request body */ private _bodySchema?; /** * The onRequest hook for the route */ private _onRequestHook?; /** * The preParsing hook for the route */ private _preParsingHook?; /** * The preValidation hook for the route */ private _preValidationHook?; /** * The preHandler hook for the route */ private _preHandlerHook?; /** * The preSerialization hook for the route */ private _preSerializationHook?; /** * The onSend hook for the route */ private _onSendHook?; /** * The onResponse hook for the route */ private _onResponseHook?; /** * The onTimeout hook for the route */ private _onTimeoutHook?; /** * The onError hook for the route */ private _onErrorHook?; /** * The route handler */ private _handler; /** * @param options The route options */ constructor(options: Route.Options<Params, Query, Body>); /** * Add a supported version to the route * @param version The version * @param prefix The version prefix * * @returns The route */ version(version: number, prefix?: string): this; /** * Set the default http status for responses * @param httpStatus The http status * * @returns The route */ status(httpStatus: HttpStatus): this; /** * Set the params schema * @param schema The validation schema * * @returns The route */ params<U extends ZodTypeAny>(schema: U): Route<U, Query, Body>; /** * Set the query schema * @param schema The validation schema * * @returns The route */ query<U extends ZodTypeAny>(schema: U): Route<Params, U, Body>; /** * Set the body schema * @param schema The validation schema * * @returns The route */ body<U extends ZodTypeAny>(schema: U): Route<Params, Query, U>; /** * Set the handler for the route * @param handler The route handler * * @returns The route */ handler(handler: Route.Handler<Params, Query, Body>): this; /** * Define the onRequest hook for the route * @param handler The hook handler */ onRequest(handler: onRequestHookHandler): this; /** * Define the preParsing hook for the route * @param handler The hook handler */ preParsing(handler: preParsingHookHandler): this; /** * Define the preValidation hook for the route * @param handler The hook handler */ preValidation(handler: preValidationHookHandler): this; /** * Define the preHandler hook for the route * @param handler The hook handler */ preHandler(handler: preHandlerHookHandler): this; /** * Define the preSerialization hook for the route * @param handler The hook handler */ preSerialization<Payload>(handler: preSerializationHookHandler<Payload>): this; /** * Define the onSend hook for the route * @param handler The hook handler */ onSend<Payload>(handler: onSendHookHandler<Payload>): this; /** * Define the onResponse hook for the route * @param handler The hook handler */ onResponse(handler: onResponseHookHandler): this; /** * Define the onTimeout hook for the route * @param handler The hook handler */ onTimeout(handler: onTimeoutHookHandler): this; /** * Define the onError hook for the route * @param handler The hook handler */ onError(handler: onErrorHookHandler): this; /** * Get the versioned routes */ toVersionedRoutes(application: Application): Route.VersionedRoute<Params, Query, Body>[]; /** * * @returns */ toJSON(application: Application): Route.VersionedRoute<Params, Query, Body>; } export declare namespace Route { type Any = Route<ZodTypeAny, ZodTypeAny, ZodTypeAny>; type AnyParsedData = ParsedData<ZodTypeAny, ZodTypeAny, ZodTypeAny>; type Path = `/${string}`; type Method = HTTPMethods; type Handler<Params extends ZodTypeAny, Query extends ZodTypeAny, Body extends ZodTypeAny> = (ctx: HandlerContext<Params, Query, Body>) => unknown; interface HandlerContext<Params extends ZodTypeAny, Query extends ZodTypeAny, Body extends ZodTypeAny> { req: FastifyRequest; reply: FastifyReply; parsed: ParsedData<Params, Query, Body>; } interface ParsedData<Params extends ZodTypeAny, Query extends ZodTypeAny, Body extends ZodTypeAny> { params: z.infer<Params>; query: z.infer<Query>; body: z.infer<Body>; } interface VersionedRoute<Params extends ZodTypeAny, Query extends ZodTypeAny, Body extends ZodTypeAny> { path: Path; method: Method; httpStatus: HttpStatus; paramsSchema?: Params; querySchema?: Query; bodySchema?: Body; handler: Handler<Params, Query, Body>; onRequest?: onRequestHookHandler; preParsing?: preParsingHookHandler; preValidation?: preValidationHookHandler; preHandler?: preHandlerHookHandler; preSerialization?: preSerializationHookHandler<unknown>; onSend?: onSendHookHandler<unknown>; onResponse?: onResponseHookHandler; onTimeout?: onTimeoutHookHandler; onError?: onErrorHookHandler; } interface Options<Params extends ZodTypeAny, Query extends ZodTypeAny, Body extends ZodTypeAny> { /** * The route path */ path: Path; /** * The route method */ method: Method; /** * The route versions */ versions?: [prefix: string | null, v: number][]; /** * The default http for responses */ httpStatus?: HttpStatus; /** * The schema for the request params */ paramsSchema?: Params; /** * The schema for the request query */ querySchema?: Query; /** * The schema for the request body */ bodySchema?: Body; /** * The onRequest hook for the route */ onRequestHook?: onRequestHookHandler; /** * The preParsing hook for the route */ preParsingHook?: preParsingHookHandler; /** * The preValidation hook for the route */ preValidationHook?: preValidationHookHandler; /** * The preHandler hook for the route */ preHandlerHook?: preHandlerHookHandler; /** * The preSerialization hook for the route */ preSerializationHook?: preSerializationHookHandler<unknown>; /** * The onSend hook for the route */ onSendHook?: onSendHookHandler<unknown>; /** * The onResponse hook for the route */ onResponseHook?: onResponseHookHandler; /** * The onTimeout hook for the route */ onTimeoutHook?: onTimeoutHookHandler; /** * The onError hook for the route */ onErrorHook?: onErrorHookHandler; } } export declare const Get: (path: Route.Path) => Route<z.ZodTypeAny, z.ZodTypeAny, z.ZodTypeAny>; export declare const Post: (path: Route.Path) => Route<z.ZodTypeAny, z.ZodTypeAny, z.ZodTypeAny>; export declare const Patch: (path: Route.Path) => Route<z.ZodTypeAny, z.ZodTypeAny, z.ZodTypeAny>; export declare const Put: (path: Route.Path) => Route<z.ZodTypeAny, z.ZodTypeAny, z.ZodTypeAny>; export declare const Delete: (path: Route.Path) => Route<z.ZodTypeAny, z.ZodTypeAny, z.ZodTypeAny>; //# sourceMappingURL=Route.d.ts.map