import { FastifyInstance } from './instance' import { FastifyRequest, RequestGenericInterface } from './request' import { FastifyReply, ReplyGenericInterface } from './reply' import { FastifySchema, FastifySchemaCompiler } from './schema' import { HTTPMethods, RawServerBase, RawServerDefault, RawRequestDefaultExpression, RawReplyDefaultExpression, ContextConfigDefault } from './utils' import { LogLevel } from './logger' import { preValidationHookHandler, preHandlerHookHandler, preSerializationHookHandler, onRequestHookHandler, preParsingHookHandler, onResponseHookHandler, onSendHookHandler, onErrorHookHandler } from './hooks' export interface RouteGenericInterface extends RequestGenericInterface, ReplyGenericInterface {} /** * Fastify Router Shorthand method type that is similar to the Express/Restify approach */ export interface RouteShorthandMethod< RawServer extends RawServerBase = RawServerDefault, RawRequest extends RawRequestDefaultExpression = RawRequestDefaultExpression, RawReply extends RawReplyDefaultExpression = RawReplyDefaultExpression, > { ( path: string, opts: RouteShorthandOptions, handler: RouteHandlerMethod ): FastifyInstance; } /** * Fastify Router Shorthand method type that is similar to the Express/Restify approach */ export interface RouteShorthandMethod< RawServer extends RawServerBase = RawServerDefault, RawRequest extends RawRequestDefaultExpression = RawRequestDefaultExpression, RawReply extends RawReplyDefaultExpression = RawReplyDefaultExpression, > { ( path: string, handler: RouteHandlerMethod ): FastifyInstance; } /** * Fastify Router Shorthand method type that is similar to the Express/Restify approach */ export interface RouteShorthandMethod< RawServer extends RawServerBase = RawServerDefault, RawRequest extends RawRequestDefaultExpression = RawRequestDefaultExpression, RawReply extends RawReplyDefaultExpression = RawReplyDefaultExpression, > { ( path: string, opts: RouteShorthandOptionsWithHandler ): FastifyInstance; } /** * Route shorthand options for the various shorthand methods */ export interface RouteShorthandOptions< RawServer extends RawServerBase = RawServerDefault, RawRequest extends RawRequestDefaultExpression = RawRequestDefaultExpression, RawReply extends RawReplyDefaultExpression = RawReplyDefaultExpression, RouteGeneric extends RouteGenericInterface = RouteGenericInterface, ContextConfig = ContextConfigDefault > { schema?: FastifySchema; attachValidation?: boolean; validatorCompiler?: FastifySchemaCompiler; serializerCompiler?: FastifySchemaCompiler; bodyLimit?: number; logLevel?: LogLevel; config?: ContextConfig; version?: string; prefixTrailingSlash?: boolean; // hooks onRequest?: onRequestHookHandler | onRequestHookHandler[]; preParsing?: preParsingHookHandler | preParsingHookHandler[]; preValidation?: preValidationHookHandler | preValidationHookHandler[]; preHandler?: preHandlerHookHandler | preHandlerHookHandler[]; preSerialization?: preSerializationHookHandler | preSerializationHookHandler[]; onSend?: onSendHookHandler | onSendHookHandler[]; onResponse?: onResponseHookHandler | onResponseHookHandler[]; onError?: onErrorHookHandler | onErrorHookHandler[]; } /** * Fastify route method options. */ export interface RouteOptions< RawServer extends RawServerBase = RawServerDefault, RawRequest extends RawRequestDefaultExpression = RawRequestDefaultExpression, RawReply extends RawReplyDefaultExpression = RawReplyDefaultExpression, RouteGeneric extends RouteGenericInterface = RouteGenericInterface, ContextConfig = ContextConfigDefault > extends RouteShorthandOptions { method: HTTPMethods | HTTPMethods[]; url: string; handler: RouteHandlerMethod; } /** * Shorthand options including the handler function property */ export interface RouteShorthandOptionsWithHandler< RawServer extends RawServerBase = RawServerDefault, RawRequest extends RawRequestDefaultExpression = RawRequestDefaultExpression, RawReply extends RawReplyDefaultExpression = RawReplyDefaultExpression, RouteGeneric extends RouteGenericInterface = RouteGenericInterface, ContextConfig = ContextConfigDefault > extends RouteShorthandOptions { handler: RouteHandlerMethod; } /** * Route handler method declaration. */ export type RouteHandlerMethod< RawServer extends RawServerBase = RawServerDefault, RawRequest extends RawRequestDefaultExpression = RawRequestDefaultExpression, RawReply extends RawReplyDefaultExpression = RawReplyDefaultExpression, RouteGeneric extends RouteGenericInterface = RouteGenericInterface, ContextConfig = ContextConfigDefault > = ( this: FastifyInstance, request: FastifyRequest, reply: FastifyReply ) => void | Promise export type RouteHandler< RouteGeneric extends RouteGenericInterface = RouteGenericInterface, RawServer extends RawServerBase = RawServerDefault, RawRequest extends RawRequestDefaultExpression = RawRequestDefaultExpression, RawReply extends RawReplyDefaultExpression = RawReplyDefaultExpression, ContextConfig = ContextConfigDefault > = ( this: FastifyInstance, request: FastifyRequest, reply: FastifyReply ) => void | Promise