strong-tie/inbound-calls
0
1import { Readable } from 'node:stream'2import { FastifyInstance } from './instance'3import { RouteOptions, RouteGenericInterface } from './route'4import { RawServerBase, RawServerDefault, RawRequestDefaultExpression, RawReplyDefaultExpression, ContextConfigDefault } from './utils'5import { FastifyRequest } from './request'6import { FastifyReply } from './reply'7import { FastifyError } from '@fastify/error'8import { FastifyBaseLogger } from './logger'9import {10 FastifyTypeProvider,11 FastifyTypeProviderDefault12} from './type-provider'13import { RegisterOptions } from './register'14import { FastifySchema } from './schema'15import { FastifyPluginOptions } from './plugin'16 17type HookHandlerDoneFunction = <TError extends Error = FastifyError>(err?: TError) => void18 19interface RequestPayload extends Readable {20 receivedEncodedLength?: number;21}22 23// Lifecycle Hooks24 25/**26 * `onRequest` is the first hook to be executed in the request lifecycle. There was no previous hook, the next hook will be `preParsing`.27 * Notice: in the `onRequest` hook, request.body will always be null, because the body parsing happens before the `preHandler` hook.28 */29export interface onRequestHookHandler<30 RawServer extends RawServerBase = RawServerDefault,31 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,32 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,33 RouteGeneric extends RouteGenericInterface = RouteGenericInterface,34 ContextConfig = ContextConfigDefault,35 SchemaCompiler extends FastifySchema = FastifySchema,36 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,37 Logger extends FastifyBaseLogger = FastifyBaseLogger38> {39 (40 this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,41 request: FastifyRequest<RouteGeneric, RawServer, RawRequest, SchemaCompiler, TypeProvider, ContextConfig, Logger>,42 reply: FastifyReply<RouteGeneric, RawServer, RawRequest, RawReply, ContextConfig, SchemaCompiler, TypeProvider>,43 done: HookHandlerDoneFunction44 ): void;45}46 47export interface onRequestAsyncHookHandler<48 RawServer extends RawServerBase = RawServerDefault,49 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,50 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,51 RouteGeneric extends RouteGenericInterface = RouteGenericInterface,52 ContextConfig = ContextConfigDefault,53 SchemaCompiler extends FastifySchema = FastifySchema,54 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,55 Logger extends FastifyBaseLogger = FastifyBaseLogger56> {57 (58 this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,59 request: FastifyRequest<RouteGeneric, RawServer, RawRequest, SchemaCompiler, TypeProvider, ContextConfig, Logger>,60 reply: FastifyReply<RouteGeneric, RawServer, RawRequest, RawReply, ContextConfig, SchemaCompiler, TypeProvider>,61 ): Promise<unknown>;62}63 64// helper type which infers whether onRequestHookHandler or onRequestAsyncHookHandler are65// applicable based on the specified return type.66export type onRequestMetaHookHandler<67 RawServer extends RawServerBase = RawServerDefault,68 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,69 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,70 RouteGeneric extends RouteGenericInterface = RouteGenericInterface,71 ContextConfig = ContextConfigDefault,72 SchemaCompiler extends FastifySchema = FastifySchema,73 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,74 Logger extends FastifyBaseLogger = FastifyBaseLogger,75 Return extends ReturnType<onRequestHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>76 | ReturnType<onRequestAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>77 = ReturnType<onRequestHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>78> = Return extends ReturnType<onRequestHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>79 ? onRequestHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>80 : onRequestAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>81 82/**83 * `preParsing` is the second hook to be executed in the request lifecycle. The previous hook was `onRequest`, the next hook will be `preValidation`.84 * Notice: in the `preParsing` hook, request.body will always be null, because the body parsing happens before the `preHandler` hook.85 */86export interface preParsingHookHandler<87 RawServer extends RawServerBase = RawServerDefault,88 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,89 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,90 RouteGeneric extends RouteGenericInterface = RouteGenericInterface,91 ContextConfig = ContextConfigDefault,92 SchemaCompiler extends FastifySchema = FastifySchema,93 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,94 Logger extends FastifyBaseLogger = FastifyBaseLogger95> {96 (97 this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,98 request: FastifyRequest<RouteGeneric, RawServer, RawRequest, SchemaCompiler, TypeProvider, ContextConfig, Logger>,99 reply: FastifyReply<RouteGeneric, RawServer, RawRequest, RawReply, ContextConfig, SchemaCompiler, TypeProvider>,100 payload: RequestPayload,101 done: <TError extends Error = FastifyError>(err?: TError | null, res?: RequestPayload) => void102 ): void;103}104 105export interface preParsingAsyncHookHandler<106 RawServer extends RawServerBase = RawServerDefault,107 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,108 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,109 RouteGeneric extends RouteGenericInterface = RouteGenericInterface,110 ContextConfig = ContextConfigDefault,111 SchemaCompiler extends FastifySchema = FastifySchema,112 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,113 Logger extends FastifyBaseLogger = FastifyBaseLogger114> {115 (116 this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,117 request: FastifyRequest<RouteGeneric, RawServer, RawRequest, SchemaCompiler, TypeProvider, ContextConfig, Logger>,118 reply: FastifyReply<RouteGeneric, RawServer, RawRequest, RawReply, ContextConfig, SchemaCompiler, TypeProvider>,119 payload: RequestPayload,120 ): Promise<RequestPayload | unknown>;121}122 123// helper type which infers whether preParsingHookHandler or preParsingAsyncHookHandler are124// applicable based on the specified return type.125export type preParsingMetaHookHandler<126 RawServer extends RawServerBase = RawServerDefault,127 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,128 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,129 RouteGeneric extends RouteGenericInterface = RouteGenericInterface,130 ContextConfig = ContextConfigDefault,131 SchemaCompiler extends FastifySchema = FastifySchema,132 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,133 Logger extends FastifyBaseLogger = FastifyBaseLogger,134 Return extends ReturnType<preParsingHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>135 | ReturnType<preParsingAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>136 = ReturnType<preParsingHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>137> = Return extends ReturnType<preParsingHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>138 ? preParsingHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>139 : preParsingAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>140 141/**142 * `preValidation` is the third hook to be executed in the request lifecycle. The previous hook was `preParsing`, the next hook will be `preHandler`.143 */144export interface preValidationHookHandler<145 RawServer extends RawServerBase = RawServerDefault,146 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,147 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,148 RouteGeneric extends RouteGenericInterface = RouteGenericInterface,149 ContextConfig = ContextConfigDefault,150 SchemaCompiler extends FastifySchema = FastifySchema,151 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,152 Logger extends FastifyBaseLogger = FastifyBaseLogger153> {154 (155 this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,156 request: FastifyRequest<RouteGeneric, RawServer, RawRequest, SchemaCompiler, TypeProvider, ContextConfig, Logger>,157 reply: FastifyReply<RouteGeneric, RawServer, RawRequest, RawReply, ContextConfig, SchemaCompiler, TypeProvider>,158 done: HookHandlerDoneFunction159 ): void;160}161 162export interface preValidationAsyncHookHandler<163 RawServer extends RawServerBase = RawServerDefault,164 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,165 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,166 RouteGeneric extends RouteGenericInterface = RouteGenericInterface,167 ContextConfig = ContextConfigDefault,168 SchemaCompiler extends FastifySchema = FastifySchema,169 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,170 Logger extends FastifyBaseLogger = FastifyBaseLogger171> {172 (173 this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,174 request: FastifyRequest<RouteGeneric, RawServer, RawRequest, SchemaCompiler, TypeProvider, ContextConfig, Logger>,175 reply: FastifyReply<RouteGeneric, RawServer, RawRequest, RawReply, ContextConfig, SchemaCompiler, TypeProvider>,176 ): Promise<unknown>;177}178 179// helper type which infers whether preValidationHookHandler or preValidationAsyncHookHandler are180// applicable based on the specified return type.181export type preValidationMetaHookHandler<182 RawServer extends RawServerBase = RawServerDefault,183 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,184 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,185 RouteGeneric extends RouteGenericInterface = RouteGenericInterface,186 ContextConfig = ContextConfigDefault,187 SchemaCompiler extends FastifySchema = FastifySchema,188 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,189 Logger extends FastifyBaseLogger = FastifyBaseLogger,190 Return extends ReturnType<preValidationHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>191 | ReturnType<preValidationAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>192 = ReturnType<preValidationHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>193> = Return extends ReturnType<preValidationHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>194 ? preValidationHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>195 : preValidationAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>196 197/**198 * `preHandler` is the fourth hook to be executed in the request lifecycle. The previous hook was `preValidation`, the next hook will be `preSerialization`.199 */200export interface preHandlerHookHandler<201 RawServer extends RawServerBase = RawServerDefault,202 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,203 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,204 RouteGeneric extends RouteGenericInterface = RouteGenericInterface,205 ContextConfig = ContextConfigDefault,206 SchemaCompiler extends FastifySchema = FastifySchema,207 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,208 Logger extends FastifyBaseLogger = FastifyBaseLogger209> {210 (211 this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,212 request: FastifyRequest<RouteGeneric, RawServer, RawRequest, SchemaCompiler, TypeProvider, ContextConfig, Logger>,213 reply: FastifyReply<RouteGeneric, RawServer, RawRequest, RawReply, ContextConfig, SchemaCompiler, TypeProvider>,214 done: HookHandlerDoneFunction215 ): void;216}217 218export interface preHandlerAsyncHookHandler<219 RawServer extends RawServerBase = RawServerDefault,220 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,221 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,222 RouteGeneric extends RouteGenericInterface = RouteGenericInterface,223 ContextConfig = ContextConfigDefault,224 SchemaCompiler extends FastifySchema = FastifySchema,225 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,226 Logger extends FastifyBaseLogger = FastifyBaseLogger227> {228 (229 this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,230 request: FastifyRequest<RouteGeneric, RawServer, RawRequest, SchemaCompiler, TypeProvider, ContextConfig, Logger>,231 reply: FastifyReply<RouteGeneric, RawServer, RawRequest, RawReply, ContextConfig, SchemaCompiler, TypeProvider>,232 ): Promise<unknown>;233}234 235// helper type which infers whether preHandlerHookHandler or preHandlerAsyncHookHandler are236// applicable based on the specified return type.237export type preHandlerMetaHookHandler<238 RawServer extends RawServerBase = RawServerDefault,239 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,240 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,241 RouteGeneric extends RouteGenericInterface = RouteGenericInterface,242 ContextConfig = ContextConfigDefault,243 SchemaCompiler extends FastifySchema = FastifySchema,244 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,245 Logger extends FastifyBaseLogger = FastifyBaseLogger,246 Return extends ReturnType<preHandlerHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>247 | ReturnType<preHandlerAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>248 = ReturnType<preHandlerHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>249> = Return extends ReturnType<preHandlerHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>250 ? preHandlerHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>251 : preHandlerAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>252 253// This is used within the `preSerialization` and `onSend` hook handlers254interface DoneFuncWithErrOrRes {255 (): void;256 <TError extends Error = FastifyError>(err: TError): void;257 (err: null, res: unknown): void;258}259 260/**261 * `preSerialization` is the fifth hook to be executed in the request lifecycle. The previous hook was `preHandler`, the next hook will be `onSend`.262 * Note: the hook is NOT called if the payload is a string, a Buffer, a stream or null.263 */264export interface preSerializationHookHandler<265 PreSerializationPayload = unknown,266 RawServer extends RawServerBase = RawServerDefault,267 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,268 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,269 RouteGeneric extends RouteGenericInterface = RouteGenericInterface,270 ContextConfig = ContextConfigDefault,271 SchemaCompiler extends FastifySchema = FastifySchema,272 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,273 Logger extends FastifyBaseLogger = FastifyBaseLogger274> {275 (276 this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,277 request: FastifyRequest<RouteGeneric, RawServer, RawRequest, SchemaCompiler, TypeProvider, ContextConfig, Logger>,278 reply: FastifyReply<RouteGeneric, RawServer, RawRequest, RawReply, ContextConfig, SchemaCompiler, TypeProvider>,279 payload: PreSerializationPayload,280 done: DoneFuncWithErrOrRes281 ): void;282}283 284export interface preSerializationAsyncHookHandler<285 PreSerializationPayload = unknown,286 RawServer extends RawServerBase = RawServerDefault,287 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,288 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,289 RouteGeneric extends RouteGenericInterface = RouteGenericInterface,290 ContextConfig = ContextConfigDefault,291 SchemaCompiler extends FastifySchema = FastifySchema,292 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,293 Logger extends FastifyBaseLogger = FastifyBaseLogger294> {295 (296 this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,297 request: FastifyRequest<RouteGeneric, RawServer, RawRequest, SchemaCompiler, TypeProvider, ContextConfig, Logger>,298 reply: FastifyReply<RouteGeneric, RawServer, RawRequest, RawReply, ContextConfig, SchemaCompiler, TypeProvider>,299 payload: PreSerializationPayload300 ): Promise<unknown>;301}302 303// helper type which infers whether preSerializationHookHandler or preSerializationAsyncHookHandler are304// applicable based on the specified return type.305export type preSerializationMetaHookHandler<306 PreSerializationPayload = unknown,307 RawServer extends RawServerBase = RawServerDefault,308 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,309 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,310 RouteGeneric extends RouteGenericInterface = RouteGenericInterface,311 ContextConfig = ContextConfigDefault,312 SchemaCompiler extends FastifySchema = FastifySchema,313 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,314 Logger extends FastifyBaseLogger = FastifyBaseLogger,315 Return extends ReturnType<preSerializationHookHandler<PreSerializationPayload, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>316 | ReturnType<preSerializationAsyncHookHandler<PreSerializationPayload, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>317 = ReturnType<preSerializationHookHandler<PreSerializationPayload, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>318> = Return extends ReturnType<preSerializationHookHandler<PreSerializationPayload, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>319 ? preSerializationHookHandler<PreSerializationPayload, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>320 : preSerializationAsyncHookHandler<PreSerializationPayload, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>321 322/**323 * You can change the payload with the `onSend` hook. It is the sixth hook to be executed in the request lifecycle. The previous hook was `preSerialization`, the next hook will be `onResponse`.324 * Note: If you change the payload, you may only change it to a string, a Buffer, a stream, or null.325 */326export interface onSendHookHandler<327 OnSendPayload = unknown,328 RawServer extends RawServerBase = RawServerDefault,329 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,330 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,331 RouteGeneric extends RouteGenericInterface = RouteGenericInterface,332 ContextConfig = ContextConfigDefault,333 SchemaCompiler extends FastifySchema = FastifySchema,334 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,335 Logger extends FastifyBaseLogger = FastifyBaseLogger336> {337 (338 this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,339 request: FastifyRequest<RouteGeneric, RawServer, RawRequest, SchemaCompiler, TypeProvider, ContextConfig, Logger>,340 reply: FastifyReply<RouteGeneric, RawServer, RawRequest, RawReply, ContextConfig, SchemaCompiler, TypeProvider>,341 payload: OnSendPayload,342 done: DoneFuncWithErrOrRes343 ): void;344}345 346export interface onSendAsyncHookHandler<347 OnSendPayload = unknown,348 RawServer extends RawServerBase = RawServerDefault,349 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,350 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,351 RouteGeneric extends RouteGenericInterface = RouteGenericInterface,352 ContextConfig = ContextConfigDefault,353 SchemaCompiler extends FastifySchema = FastifySchema,354 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,355 Logger extends FastifyBaseLogger = FastifyBaseLogger356> {357 (358 this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,359 request: FastifyRequest<RouteGeneric, RawServer, RawRequest, SchemaCompiler, TypeProvider, ContextConfig, Logger>,360 reply: FastifyReply<RouteGeneric, RawServer, RawRequest, RawReply, ContextConfig, SchemaCompiler, TypeProvider>,361 payload: OnSendPayload,362 ): Promise<unknown>;363}364 365// helper type which infers whether onSendHookHandler or onSendAsyncHookHandler are366// applicable based on the specified return type.367export type onSendMetaHookHandler<368 OnSendPayload = unknown,369 RawServer extends RawServerBase = RawServerDefault,370 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,371 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,372 RouteGeneric extends RouteGenericInterface = RouteGenericInterface,373 ContextConfig = ContextConfigDefault,374 SchemaCompiler extends FastifySchema = FastifySchema,375 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,376 Logger extends FastifyBaseLogger = FastifyBaseLogger,377 Return extends ReturnType<onSendHookHandler<OnSendPayload, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>378 | ReturnType<onSendAsyncHookHandler<OnSendPayload, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>379 = ReturnType<onSendHookHandler<OnSendPayload, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>380> = Return extends ReturnType<onSendHookHandler<OnSendPayload, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>381 ? onSendHookHandler<OnSendPayload, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>382 : onSendAsyncHookHandler<OnSendPayload, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>383 384/**385 * `onResponse` is the seventh and last hook in the request hook lifecycle. The previous hook was `onSend`, there is no next hook.386 * The onResponse hook is executed when a response has been sent, so you will not be able to send more data to the client. It can however be useful for sending data to external services, for example to gather statistics.387 */388export interface onResponseHookHandler<389 RawServer extends RawServerBase = RawServerDefault,390 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,391 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,392 RouteGeneric extends RouteGenericInterface = RouteGenericInterface,393 ContextConfig = ContextConfigDefault,394 SchemaCompiler extends FastifySchema = FastifySchema,395 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,396 Logger extends FastifyBaseLogger = FastifyBaseLogger397> {398 (399 this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,400 request: FastifyRequest<RouteGeneric, RawServer, RawRequest, SchemaCompiler, TypeProvider, ContextConfig, Logger>,401 reply: FastifyReply<RouteGeneric, RawServer, RawRequest, RawReply, ContextConfig, SchemaCompiler, TypeProvider>,402 done: HookHandlerDoneFunction403 ): void;404}405 406export interface onResponseAsyncHookHandler<407 RawServer extends RawServerBase = RawServerDefault,408 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,409 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,410 RouteGeneric extends RouteGenericInterface = RouteGenericInterface,411 ContextConfig = ContextConfigDefault,412 SchemaCompiler extends FastifySchema = FastifySchema,413 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,414 Logger extends FastifyBaseLogger = FastifyBaseLogger415> {416 (417 this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,418 request: FastifyRequest<RouteGeneric, RawServer, RawRequest, SchemaCompiler, TypeProvider, ContextConfig, Logger>,419 reply: FastifyReply<RouteGeneric, RawServer, RawRequest, RawReply, ContextConfig, SchemaCompiler, TypeProvider>420 ): Promise<unknown>;421}422 423// helper type which infers whether onResponseHookHandler or onResponseAsyncHookHandler are424// applicable based on the specified return type.425export type onResponseMetaHookHandler<426 RawServer extends RawServerBase = RawServerDefault,427 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,428 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,429 RouteGeneric extends RouteGenericInterface = RouteGenericInterface,430 ContextConfig = ContextConfigDefault,431 SchemaCompiler extends FastifySchema = FastifySchema,432 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,433 Logger extends FastifyBaseLogger = FastifyBaseLogger,434 Return extends ReturnType<onResponseHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>435 | ReturnType<onResponseAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>436 = ReturnType<onResponseHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>437> = Return extends ReturnType<onResponseHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>438 ? onResponseHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>439 : onResponseAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>440 441/**442 * `onTimeout` is useful if you need to monitor the request timed out in your service. (if the `connectionTimeout` property is set on the fastify instance)443 * The onTimeout hook is executed when a request is timed out and the http socket has been hanged up. Therefore you will not be able to send data to the client.444 */445export interface onTimeoutHookHandler<446 RawServer extends RawServerBase = RawServerDefault,447 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,448 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,449 RouteGeneric extends RouteGenericInterface = RouteGenericInterface,450 ContextConfig = ContextConfigDefault,451 SchemaCompiler extends FastifySchema = FastifySchema,452 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,453 Logger extends FastifyBaseLogger = FastifyBaseLogger454> {455 (456 this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,457 request: FastifyRequest<RouteGeneric, RawServer, RawRequest, SchemaCompiler, TypeProvider, ContextConfig, Logger>,458 reply: FastifyReply<RouteGeneric, RawServer, RawRequest, RawReply, ContextConfig, SchemaCompiler, TypeProvider>,459 done: HookHandlerDoneFunction460 ): void;461}462 463export interface onTimeoutAsyncHookHandler<464 RawServer extends RawServerBase = RawServerDefault,465 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,466 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,467 RouteGeneric extends RouteGenericInterface = RouteGenericInterface,468 ContextConfig = ContextConfigDefault,469 SchemaCompiler extends FastifySchema = FastifySchema,470 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,471 Logger extends FastifyBaseLogger = FastifyBaseLogger472> {473 (474 this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,475 request: FastifyRequest<RouteGeneric, RawServer, RawRequest, SchemaCompiler, TypeProvider, ContextConfig, Logger>,476 reply: FastifyReply<RouteGeneric, RawServer, RawRequest, RawReply, ContextConfig, SchemaCompiler, TypeProvider>477 ): Promise<unknown>;478}479 480// helper type which infers whether onTimeoutHookHandler or onTimeoutAsyncHookHandler are481// applicable based on the specified return type.482export type onTimeoutMetaHookHandler<483 RawServer extends RawServerBase = RawServerDefault,484 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,485 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,486 RouteGeneric extends RouteGenericInterface = RouteGenericInterface,487 ContextConfig = ContextConfigDefault,488 SchemaCompiler extends FastifySchema = FastifySchema,489 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,490 Logger extends FastifyBaseLogger = FastifyBaseLogger,491 Return extends ReturnType<onTimeoutHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>492 | ReturnType<onTimeoutAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>493 = ReturnType<onTimeoutHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>494> = Return extends ReturnType<onTimeoutHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>495 ? onTimeoutHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>496 : onTimeoutAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>497 498/**499 * This hook is useful if you need to do some custom error logging or add some specific header in case of error.500 * It is not intended for changing the error, and calling reply.send will throw an exception.501 * This hook will be executed only after the customErrorHandler has been executed, and only if the customErrorHandler sends an error back to the user (Note that the default customErrorHandler always sends the error back to the user).502 * Notice: unlike the other hooks, pass an error to the done function is not supported.503 */504export interface onErrorHookHandler<505 RawServer extends RawServerBase = RawServerDefault,506 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,507 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,508 RouteGeneric extends RouteGenericInterface = RouteGenericInterface,509 ContextConfig = ContextConfigDefault,510 TError extends Error = FastifyError,511 SchemaCompiler extends FastifySchema = FastifySchema,512 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,513 Logger extends FastifyBaseLogger = FastifyBaseLogger514> {515 (516 this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,517 request: FastifyRequest<RouteGeneric, RawServer, RawRequest, SchemaCompiler, TypeProvider, ContextConfig, Logger>,518 reply: FastifyReply<RouteGeneric, RawServer, RawRequest, RawReply, ContextConfig, SchemaCompiler, TypeProvider>,519 error: TError,520 done: () => void521 ): void;522}523 524export interface onErrorAsyncHookHandler<525 RawServer extends RawServerBase = RawServerDefault,526 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,527 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,528 RouteGeneric extends RouteGenericInterface = RouteGenericInterface,529 ContextConfig = ContextConfigDefault,530 TError extends Error = FastifyError,531 SchemaCompiler extends FastifySchema = FastifySchema,532 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,533 Logger extends FastifyBaseLogger = FastifyBaseLogger534> {535 (536 this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,537 request: FastifyRequest<RouteGeneric, RawServer, RawRequest, SchemaCompiler, TypeProvider, ContextConfig, Logger>,538 reply: FastifyReply<RouteGeneric, RawServer, RawRequest, RawReply, ContextConfig, SchemaCompiler, TypeProvider>,539 error: TError540 ): Promise<unknown>;541}542 543// helper type which infers whether onErrorHookHandler or onErrorAsyncHookHandler are544// applicable based on the specified return type.545export type onErrorMetaHookHandler<546 RawServer extends RawServerBase = RawServerDefault,547 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,548 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,549 RouteGeneric extends RouteGenericInterface = RouteGenericInterface,550 ContextConfig = ContextConfigDefault,551 TError extends Error = FastifyError,552 SchemaCompiler extends FastifySchema = FastifySchema,553 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,554 Logger extends FastifyBaseLogger = FastifyBaseLogger,555 Return extends ReturnType<onErrorHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, TError, SchemaCompiler, TypeProvider, Logger>>556 | ReturnType<onErrorAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, TError, SchemaCompiler, TypeProvider, Logger>>557 = ReturnType<onErrorHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, TError, SchemaCompiler, TypeProvider, Logger>>558> = Return extends ReturnType<onErrorHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, TError, SchemaCompiler, TypeProvider, Logger>>559 ? onErrorHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, TError, SchemaCompiler, TypeProvider, Logger>560 : onErrorAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, TError, SchemaCompiler, TypeProvider, Logger>561 562/**563 * `onRequestAbort` is useful if you need to monitor the if the client aborts the request (if the `request.raw.aborted` property is set to `true`).564 * The `onRequestAbort` hook is executed when a client closes the connection before the entire request has been received. Therefore, you will not be able to send data to the client.565 * Notice: client abort detection is not completely reliable. See: https://github.com/fastify/fastify/blob/main/docs/Guides/Detecting-When-Clients-Abort.md566 */567export interface onRequestAbortHookHandler<568 RawServer extends RawServerBase = RawServerDefault,569 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,570 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,571 RouteGeneric extends RouteGenericInterface = RouteGenericInterface,572 ContextConfig = ContextConfigDefault,573 SchemaCompiler extends FastifySchema = FastifySchema,574 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,575 Logger extends FastifyBaseLogger = FastifyBaseLogger576> {577 (578 this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,579 request: FastifyRequest<RouteGeneric, RawServer, RawRequest, SchemaCompiler, TypeProvider, ContextConfig, Logger>,580 done: HookHandlerDoneFunction581 ): void;582}583 584export interface onRequestAbortAsyncHookHandler<585 RawServer extends RawServerBase = RawServerDefault,586 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,587 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,588 RouteGeneric extends RouteGenericInterface = RouteGenericInterface,589 ContextConfig = ContextConfigDefault,590 SchemaCompiler extends FastifySchema = FastifySchema,591 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,592 Logger extends FastifyBaseLogger = FastifyBaseLogger593> {594 (595 this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,596 request: FastifyRequest<RouteGeneric, RawServer, RawRequest, SchemaCompiler, TypeProvider, ContextConfig, Logger>,597 ): Promise<unknown>;598}599 600// helper type which infers whether onRequestAbortHookHandler or onRequestAbortHookHandler are601// applicable based on the specified return type.602export type onRequestAbortMetaHookHandler<603 RawServer extends RawServerBase = RawServerDefault,604 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,605 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,606 RouteGeneric extends RouteGenericInterface = RouteGenericInterface,607 ContextConfig = ContextConfigDefault,608 SchemaCompiler extends FastifySchema = FastifySchema,609 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,610 Logger extends FastifyBaseLogger = FastifyBaseLogger,611 Return extends ReturnType<onRequestAbortHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>612 | ReturnType<onRequestAbortAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>613 = ReturnType<onRequestAbortHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>614> = Return extends ReturnType<onRequestAbortHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>>615 ? onRequestAbortHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>616 : onRequestAbortAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>617 618export type LifecycleHook = 'onRequest'619| 'preParsing'620| 'preValidation'621| 'preHandler'622| 'preSerialization'623| 'onSend'624| 'onResponse'625| 'onRequest'626| 'onError'627| 'onTimeout'628| 'onRequestAbort'629 630export type LifecycleHookLookup<K extends LifecycleHook> = K extends 'onRequest'631 ? onRequestHookHandler632 : K extends 'preParsing'633 ? preParsingHookHandler634 : K extends 'preValidation'635 ? preValidationHookHandler636 : K extends 'preHandler'637 ? preHandlerHookHandler638 : K extends 'preSerialization'639 ? preSerializationHookHandler640 : K extends 'onSend'641 ? onSendHookHandler642 : K extends 'onResponse'643 ? onResponseHookHandler644 : K extends 'onRequest'645 ? onRequestHookHandler646 : K extends 'onError'647 ? onErrorHookHandler648 : K extends 'onTimeout'649 ? onTimeoutHookHandler650 : K extends 'onRequestAbort'651 ? onRequestAbortHookHandler652 : never653 654export type LifecycleHookAsyncLookup<K extends LifecycleHook> = K extends 'onRequest'655 ? onRequestAsyncHookHandler656 : K extends 'preParsing'657 ? preParsingAsyncHookHandler658 : K extends 'preValidation'659 ? preValidationAsyncHookHandler660 : K extends 'preHandler'661 ? preHandlerAsyncHookHandler662 : K extends 'preSerialization'663 ? preSerializationAsyncHookHandler664 : K extends 'onSend'665 ? onSendAsyncHookHandler666 : K extends 'onResponse'667 ? onResponseAsyncHookHandler668 : K extends 'onRequest'669 ? onRequestAsyncHookHandler670 : K extends 'onError'671 ? onErrorAsyncHookHandler672 : K extends 'onTimeout'673 ? onTimeoutAsyncHookHandler674 : K extends 'onRequestAbort'675 ? onRequestAbortAsyncHookHandler676 : never677 678// Application Hooks679 680/**681 * Triggered when a new route is registered. Listeners are passed a routeOptions object as the sole parameter. The interface is synchronous, and, as such, the listener does not get passed a callback682 */683export interface onRouteHookHandler<684 RawServer extends RawServerBase = RawServerDefault,685 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,686 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,687 RouteGeneric extends RouteGenericInterface = RouteGenericInterface,688 ContextConfig = ContextConfigDefault,689 SchemaCompiler extends FastifySchema = FastifySchema,690 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,691 Logger extends FastifyBaseLogger = FastifyBaseLogger692> {693 (694 this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,695 opts: RouteOptions<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider> & { routePath: string; path: string; prefix: string }696 ): Promise<unknown> | void;697}698 699/**700 * Triggered when a new plugin is registered and a new encapsulation context is created. The hook will be executed before the registered code.701 * This hook can be useful if you are developing a plugin that needs to know when a plugin context is formed, and you want to operate in that specific context.702 * Note: This hook will not be called if a plugin is wrapped inside fastify-plugin.703 */704export interface onRegisterHookHandler<705 RawServer extends RawServerBase = RawServerDefault,706 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,707 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,708 Logger extends FastifyBaseLogger = FastifyBaseLogger,709 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,710 Options extends FastifyPluginOptions = FastifyPluginOptions711> {712 (713 this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,714 instance: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,715 opts: RegisterOptions & Options716 ): Promise<unknown> | void;717}718 719/**720 * Triggered when fastify.listen() or fastify.ready() is invoked to start the server. It is useful when plugins need a "ready" event, for example to load data before the server start listening for requests.721 */722export interface onReadyHookHandler<723 RawServer extends RawServerBase = RawServerDefault,724 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,725 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,726 Logger extends FastifyBaseLogger = FastifyBaseLogger,727 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault728> {729 (730 this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,731 done: HookHandlerDoneFunction732 ): void;733}734 735export interface onReadyAsyncHookHandler<736 RawServer extends RawServerBase = RawServerDefault,737 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,738 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,739 Logger extends FastifyBaseLogger = FastifyBaseLogger,740 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault741> {742 (743 this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,744 ): Promise<unknown>;745}746 747/**748 * Triggered when fastify.listen() is invoked to start the server. It is useful when plugins need a "onListen" event, for example to run logics after the server start listening for requests.749 */750export interface onListenHookHandler<751 RawServer extends RawServerBase = RawServerDefault,752 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,753 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,754 Logger extends FastifyBaseLogger = FastifyBaseLogger,755 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault756> {757 (758 this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,759 done: HookHandlerDoneFunction760 ): void;761}762 763export interface onListenAsyncHookHandler<764 RawServer extends RawServerBase = RawServerDefault,765 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,766 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,767 Logger extends FastifyBaseLogger = FastifyBaseLogger,768 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault769> {770 (771 this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,772 ): Promise<unknown>;773}774/**775 * Triggered when fastify.close() is invoked to stop the server. It is useful when plugins need a "shutdown" event, for example to close an open connection to a database.776 */777export interface onCloseHookHandler<778 RawServer extends RawServerBase = RawServerDefault,779 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,780 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,781 Logger extends FastifyBaseLogger = FastifyBaseLogger,782 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault783> {784 (785 this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,786 instance: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,787 done: HookHandlerDoneFunction788 ): void;789}790 791export interface onCloseAsyncHookHandler<792 RawServer extends RawServerBase = RawServerDefault,793 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,794 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,795 Logger extends FastifyBaseLogger = FastifyBaseLogger,796 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault797> {798 (799 this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,800 instance: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>801 ): Promise<unknown>;802}803 804/**805 * Triggered when fastify.close() is invoked to stop the server. It is useful when plugins need to cancel some state to allow the server to close successfully.806 */807export interface preCloseHookHandler<808 RawServer extends RawServerBase = RawServerDefault,809 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,810 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,811 Logger extends FastifyBaseLogger = FastifyBaseLogger,812 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault813> {814 (815 this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,816 done: HookHandlerDoneFunction817 ): void;818}819 820export interface preCloseAsyncHookHandler<821 RawServer extends RawServerBase = RawServerDefault,822 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,823 RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,824 Logger extends FastifyBaseLogger = FastifyBaseLogger,825 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault826> {827 (828 this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,829 ): Promise<unknown>;830}831 832export type ApplicationHook = 'onRoute'833| 'onRegister'834| 'onReady'835| 'onListen'836| 'onClose'837| 'preClose'838 839export type ApplicationHookLookup<K extends ApplicationHook> = K extends 'onRegister'840 ? onRegisterHookHandler841 : K extends 'onReady'842 ? onReadyHookHandler843 : K extends 'onListen'844 ? onListenHookHandler845 : K extends 'onClose'846 ? onCloseHookHandler847 : K extends 'preClose'848 ? preCloseHookHandler849 : K extends 'onRoute'850 ? onRouteHookHandler851 : never852 853export type ApplicationHookAsyncLookup<K extends ApplicationHook> = K extends 'onRegister'854 ? onRegisterHookHandler855 : K extends 'onReady'856 ? onReadyAsyncHookHandler857 : K extends 'onListen'858 ? onListenAsyncHookHandler859 : K extends 'onClose'860 ? onCloseAsyncHookHandler861 : K extends 'preClose'862 ? preCloseAsyncHookHandler863 : never864 865export type HookLookup <K extends ApplicationHook | LifecycleHook> = K extends ApplicationHook866 ? ApplicationHookLookup<K>867 : K extends LifecycleHook868 ? LifecycleHookLookup<K>869 : never870 871export type HookAsyncLookup <K extends ApplicationHook | LifecycleHook> = K extends ApplicationHook872 ? ApplicationHookAsyncLookup<K>873 : K extends LifecycleHook874 ? LifecycleHookAsyncLookup<K>875 : never876 