fastify 4.21.0 → 4.22.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/docs/Guides/Database.md +1 -1
  2. package/docs/Guides/Ecosystem.md +11 -3
  3. package/docs/Guides/Getting-Started.md +1 -1
  4. package/docs/Guides/Serverless.md +2 -2
  5. package/docs/Reference/Errors.md +1 -1
  6. package/docs/Reference/HTTP2.md +2 -1
  7. package/docs/Reference/Hooks.md +4 -1
  8. package/docs/Reference/Server.md +5 -1
  9. package/docs/Reference/Validation-and-Serialization.md +1 -1
  10. package/fastify.d.ts +7 -10
  11. package/fastify.js +3 -3
  12. package/lib/contentTypeParser.js +7 -4
  13. package/lib/error-serializer.js +31 -29
  14. package/lib/handleRequest.js +3 -3
  15. package/lib/hooks.js +7 -4
  16. package/lib/logger.js +1 -1
  17. package/lib/pluginOverride.js +10 -3
  18. package/lib/pluginUtils.js +13 -10
  19. package/lib/reply.js +19 -14
  20. package/lib/request.js +2 -2
  21. package/lib/schemas.js +1 -1
  22. package/lib/server.js +4 -4
  23. package/lib/validation.js +1 -1
  24. package/out +25874 -0
  25. package/package.json +7 -6
  26. package/test/bodyLimit.test.js +69 -0
  27. package/test/build/error-serializer.test.js +2 -2
  28. package/test/custom-http-server.test.js +2 -1
  29. package/test/https/custom-https-server.test.js +2 -1
  30. package/test/internals/plugin.test.js +17 -2
  31. package/test/plugin.test.js +26 -0
  32. package/test/post-empty-body.test.js +31 -0
  33. package/test/types/fastify.test-d.ts +8 -3
  34. package/test/types/hooks.test-d.ts +13 -0
  35. package/test/types/instance.test-d.ts +7 -2
  36. package/test/types/request.test-d.ts +1 -1
  37. package/test/types/type-provider.test-d.ts +26 -1
  38. package/types/hooks.d.ts +104 -4
  39. package/types/instance.d.ts +52 -143
  40. package/types/request.d.ts +1 -1
  41. package/types/route.d.ts +6 -1
  42. package/types/schema.d.ts +1 -1
  43. package/types/tsconfig.eslint.json +2 -2
@@ -3,7 +3,7 @@ import { ConstraintStrategy, HTTPVersion } from 'find-my-way'
3
3
  import * as http from 'http'
4
4
  import { CallbackFunc as LightMyRequestCallback, Chain as LightMyRequestChain, InjectOptions, Response as LightMyRequestResponse } from 'light-my-request'
5
5
  import { AddContentTypeParser, ConstructorAction, FastifyBodyParser, getDefaultJsonParser, hasContentTypeParser, ProtoAction, removeAllContentTypeParsers, removeContentTypeParser } from './content-type-parser'
6
- import { onCloseAsyncHookHandler, onCloseHookHandler, onErrorAsyncHookHandler, onErrorHookHandler, onReadyAsyncHookHandler, onReadyHookHandler, onRegisterHookHandler, onRequestAsyncHookHandler, onRequestHookHandler, onRequestAbortAsyncHookHandler, onRequestAbortHookHandler, onResponseAsyncHookHandler, onResponseHookHandler, onRouteHookHandler, onSendAsyncHookHandler, onSendHookHandler, onTimeoutAsyncHookHandler, onTimeoutHookHandler, preHandlerAsyncHookHandler, preHandlerHookHandler, preParsingAsyncHookHandler, preParsingHookHandler, preSerializationAsyncHookHandler, preSerializationHookHandler, preValidationAsyncHookHandler, preValidationHookHandler, preCloseHookHandler, preCloseAsyncHookHandler } from './hooks'
6
+ import { onCloseAsyncHookHandler, onCloseHookHandler, onErrorAsyncHookHandler, onErrorHookHandler, onReadyAsyncHookHandler, onReadyHookHandler, onRegisterHookHandler, onRequestAsyncHookHandler, onRequestHookHandler, onRequestAbortAsyncHookHandler, onRequestAbortHookHandler, onResponseAsyncHookHandler, onResponseHookHandler, onRouteHookHandler, onSendAsyncHookHandler, onSendHookHandler, onTimeoutAsyncHookHandler, onTimeoutHookHandler, preHandlerAsyncHookHandler, preHandlerHookHandler, preParsingAsyncHookHandler, preParsingHookHandler, preSerializationAsyncHookHandler, preSerializationHookHandler, preValidationAsyncHookHandler, preValidationHookHandler, preCloseHookHandler, preCloseAsyncHookHandler, LifecycleHook, ApplicationHook, HookAsyncLookup, HookLookup } from './hooks'
7
7
  import { FastifyBaseLogger, FastifyChildLoggerFactory } from './logger'
8
8
  import { FastifyRegister } from './register'
9
9
  import { FastifyReply } from './reply'
@@ -30,6 +30,8 @@ export interface PrintRoutesOptions {
30
30
  includeHooks?: boolean
31
31
  }
32
32
 
33
+ type AsyncFunction = (...args: any) => Promise<any>;
34
+
33
35
  export interface FastifyListenOptions {
34
36
  /**
35
37
  * Default to `0` (picks the first available open port).
@@ -224,20 +226,11 @@ export interface FastifyInstance<
224
226
  RouteGeneric extends RouteGenericInterface = RouteGenericInterface,
225
227
  ContextConfig = ContextConfigDefault,
226
228
  SchemaCompiler extends FastifySchema = FastifySchema,
227
- Logger extends FastifyBaseLogger = FastifyBaseLogger
228
- >(
229
- name: 'onRequest',
230
- hook: onRequestHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
231
- ): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
232
-
233
- addHook<
234
- RouteGeneric extends RouteGenericInterface = RouteGenericInterface,
235
- ContextConfig = ContextConfigDefault,
236
- SchemaCompiler extends FastifySchema = FastifySchema,
237
- Logger extends FastifyBaseLogger = FastifyBaseLogger
229
+ Logger extends FastifyBaseLogger = FastifyBaseLogger,
230
+ Fn extends onRequestHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> | onRequestAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> = onRequestHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
238
231
  >(
239
232
  name: 'onRequest',
240
- hook: onRequestAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
233
+ hook: Fn extends unknown ? Fn extends AsyncFunction ? onRequestAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> : onRequestHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> : Fn,
241
234
  ): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
242
235
 
243
236
  /**
@@ -248,20 +241,11 @@ export interface FastifyInstance<
248
241
  RouteGeneric extends RouteGenericInterface = RouteGenericInterface,
249
242
  ContextConfig = ContextConfigDefault,
250
243
  SchemaCompiler extends FastifySchema = FastifySchema,
251
- Logger extends FastifyBaseLogger = FastifyBaseLogger
244
+ Logger extends FastifyBaseLogger = FastifyBaseLogger,
245
+ Fn extends preParsingHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> | preParsingAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> = preParsingHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
252
246
  >(
253
247
  name: 'preParsing',
254
- hook: preParsingHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
255
- ): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
256
-
257
- addHook<
258
- RouteGeneric extends RouteGenericInterface = RouteGenericInterface,
259
- ContextConfig = ContextConfigDefault,
260
- SchemaCompiler extends FastifySchema = FastifySchema,
261
- Logger extends FastifyBaseLogger = FastifyBaseLogger
262
- >(
263
- name: 'preParsing',
264
- hook: preParsingAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
248
+ hook: Fn extends unknown ? Fn extends AsyncFunction ? preParsingAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> : preParsingHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> : Fn,
265
249
  ): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
266
250
 
267
251
  /**
@@ -271,20 +255,11 @@ export interface FastifyInstance<
271
255
  RouteGeneric extends RouteGenericInterface = RouteGenericInterface,
272
256
  ContextConfig = ContextConfigDefault,
273
257
  SchemaCompiler extends FastifySchema = FastifySchema,
274
- Logger extends FastifyBaseLogger = FastifyBaseLogger
275
- >(
276
- name: 'preValidation',
277
- hook: preValidationHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
278
- ): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
279
-
280
- addHook<
281
- RouteGeneric extends RouteGenericInterface = RouteGenericInterface,
282
- ContextConfig = ContextConfigDefault,
283
- SchemaCompiler extends FastifySchema = FastifySchema,
284
- Logger extends FastifyBaseLogger = FastifyBaseLogger
258
+ Logger extends FastifyBaseLogger = FastifyBaseLogger,
259
+ Fn extends preValidationHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> | preValidationAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> = preValidationHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
285
260
  >(
286
261
  name: 'preValidation',
287
- hook: preValidationAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
262
+ hook: Fn extends unknown ? Fn extends AsyncFunction ? preValidationAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> : preValidationHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> : Fn,
288
263
  ): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
289
264
 
290
265
  /**
@@ -294,20 +269,11 @@ export interface FastifyInstance<
294
269
  RouteGeneric extends RouteGenericInterface = RouteGenericInterface,
295
270
  ContextConfig = ContextConfigDefault,
296
271
  SchemaCompiler extends FastifySchema = FastifySchema,
297
- Logger extends FastifyBaseLogger = FastifyBaseLogger
298
- >(
299
- name: 'preHandler',
300
- hook: preHandlerHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
301
- ): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
302
-
303
- addHook<
304
- RouteGeneric extends RouteGenericInterface = RouteGenericInterface,
305
- ContextConfig = ContextConfigDefault,
306
- SchemaCompiler extends FastifySchema = FastifySchema,
307
- Logger extends FastifyBaseLogger = FastifyBaseLogger
272
+ Logger extends FastifyBaseLogger = FastifyBaseLogger,
273
+ Fn extends preHandlerHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> | preHandlerAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> = preHandlerHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
308
274
  >(
309
275
  name: 'preHandler',
310
- hook: preHandlerAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
276
+ hook: Fn extends unknown ? Fn extends AsyncFunction ? preHandlerAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> : preHandlerHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> : Fn,
311
277
  ): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
312
278
 
313
279
  /**
@@ -319,21 +285,11 @@ export interface FastifyInstance<
319
285
  RouteGeneric extends RouteGenericInterface = RouteGenericInterface,
320
286
  ContextConfig = ContextConfigDefault,
321
287
  SchemaCompiler extends FastifySchema = FastifySchema,
322
- Logger extends FastifyBaseLogger = FastifyBaseLogger
288
+ Logger extends FastifyBaseLogger = FastifyBaseLogger,
289
+ Fn extends preSerializationHookHandler<PreSerializationPayload, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> | preSerializationAsyncHookHandler<PreSerializationPayload, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> = preSerializationHookHandler<PreSerializationPayload, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
323
290
  >(
324
291
  name: 'preSerialization',
325
- hook: preSerializationHookHandler<PreSerializationPayload, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
326
- ): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
327
-
328
- addHook<
329
- PreSerializationPayload = unknown,
330
- RouteGeneric extends RouteGenericInterface = RouteGenericInterface,
331
- ContextConfig = ContextConfigDefault,
332
- SchemaCompiler extends FastifySchema = FastifySchema,
333
- Logger extends FastifyBaseLogger = FastifyBaseLogger
334
- >(
335
- name: 'preSerialization',
336
- hook: preSerializationAsyncHookHandler<PreSerializationPayload, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
292
+ hook: Fn extends unknown ? Fn extends AsyncFunction ? preSerializationAsyncHookHandler<PreSerializationPayload, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> : preSerializationHookHandler<PreSerializationPayload, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> : Fn,
337
293
  ): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
338
294
 
339
295
  /**
@@ -345,21 +301,11 @@ export interface FastifyInstance<
345
301
  RouteGeneric extends RouteGenericInterface = RouteGenericInterface,
346
302
  ContextConfig = ContextConfigDefault,
347
303
  SchemaCompiler extends FastifySchema = FastifySchema,
348
- Logger extends FastifyBaseLogger = FastifyBaseLogger
304
+ Logger extends FastifyBaseLogger = FastifyBaseLogger,
305
+ Fn extends onSendHookHandler<OnSendPayload, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> | onSendAsyncHookHandler<OnSendPayload, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> = onSendHookHandler<OnSendPayload, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
349
306
  >(
350
307
  name: 'onSend',
351
- hook: onSendHookHandler<OnSendPayload, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
352
- ): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
353
-
354
- addHook<
355
- OnSendPayload = unknown,
356
- RouteGeneric extends RouteGenericInterface = RouteGenericInterface,
357
- ContextConfig = ContextConfigDefault,
358
- SchemaCompiler extends FastifySchema = FastifySchema,
359
- Logger extends FastifyBaseLogger = FastifyBaseLogger
360
- >(
361
- name: 'onSend',
362
- hook: onSendAsyncHookHandler<OnSendPayload, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
308
+ hook: Fn extends unknown ? Fn extends AsyncFunction ? onSendAsyncHookHandler<OnSendPayload, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> : onSendHookHandler<OnSendPayload, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> : Fn,
363
309
  ): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
364
310
 
365
311
  /**
@@ -370,20 +316,11 @@ export interface FastifyInstance<
370
316
  RouteGeneric extends RouteGenericInterface = RouteGenericInterface,
371
317
  ContextConfig = ContextConfigDefault,
372
318
  SchemaCompiler extends FastifySchema = FastifySchema,
373
- Logger extends FastifyBaseLogger = FastifyBaseLogger
374
- >(
375
- name: 'onResponse',
376
- hook: onResponseHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
377
- ): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
378
-
379
- addHook<
380
- RouteGeneric extends RouteGenericInterface = RouteGenericInterface,
381
- ContextConfig = ContextConfigDefault,
382
- SchemaCompiler extends FastifySchema = FastifySchema,
383
- Logger extends FastifyBaseLogger = FastifyBaseLogger
319
+ Logger extends FastifyBaseLogger = FastifyBaseLogger,
320
+ Fn extends onResponseHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> | onResponseAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> = onResponseHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
384
321
  >(
385
322
  name: 'onResponse',
386
- hook: onResponseAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
323
+ hook: Fn extends unknown ? Fn extends AsyncFunction ? onResponseAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> : onResponseHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> : Fn,
387
324
  ): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
388
325
 
389
326
  /**
@@ -394,20 +331,11 @@ export interface FastifyInstance<
394
331
  RouteGeneric extends RouteGenericInterface = RouteGenericInterface,
395
332
  ContextConfig = ContextConfigDefault,
396
333
  SchemaCompiler extends FastifySchema = FastifySchema,
397
- Logger extends FastifyBaseLogger = FastifyBaseLogger
334
+ Logger extends FastifyBaseLogger = FastifyBaseLogger,
335
+ Fn extends onTimeoutHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> | onTimeoutAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> = onTimeoutHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
398
336
  >(
399
337
  name: 'onTimeout',
400
- hook: onTimeoutHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
401
- ): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
402
-
403
- addHook<
404
- RouteGeneric extends RouteGenericInterface = RouteGenericInterface,
405
- ContextConfig = ContextConfigDefault,
406
- SchemaCompiler extends FastifySchema = FastifySchema,
407
- Logger extends FastifyBaseLogger = FastifyBaseLogger
408
- >(
409
- name: 'onTimeout',
410
- hook: onTimeoutAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
338
+ hook: Fn extends unknown ? Fn extends AsyncFunction ? onTimeoutAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> : onTimeoutHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> : Fn,
411
339
  ): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
412
340
 
413
341
  /**
@@ -419,20 +347,11 @@ export interface FastifyInstance<
419
347
  RouteGeneric extends RouteGenericInterface = RouteGenericInterface,
420
348
  ContextConfig = ContextConfigDefault,
421
349
  SchemaCompiler extends FastifySchema = FastifySchema,
422
- Logger extends FastifyBaseLogger = FastifyBaseLogger
423
- >(
424
- name: 'onRequestAbort',
425
- hook: onRequestAbortHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
426
- ): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
427
-
428
- addHook<
429
- RouteGeneric extends RouteGenericInterface = RouteGenericInterface,
430
- ContextConfig = ContextConfigDefault,
431
- SchemaCompiler extends FastifySchema = FastifySchema,
432
- Logger extends FastifyBaseLogger = FastifyBaseLogger
350
+ Logger extends FastifyBaseLogger = FastifyBaseLogger,
351
+ Fn extends onRequestAbortHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> | onRequestAbortAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> = onRequestAbortHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
433
352
  >(
434
353
  name: 'onRequestAbort',
435
- hook: onRequestAbortAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
354
+ hook: Fn extends unknown ? Fn extends AsyncFunction ? onRequestAbortAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> : onRequestAbortHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> : Fn,
436
355
  ): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
437
356
 
438
357
  /**
@@ -445,20 +364,11 @@ export interface FastifyInstance<
445
364
  RouteGeneric extends RouteGenericInterface = RouteGenericInterface,
446
365
  ContextConfig = ContextConfigDefault,
447
366
  SchemaCompiler extends FastifySchema = FastifySchema,
448
- Logger extends FastifyBaseLogger = FastifyBaseLogger
367
+ Logger extends FastifyBaseLogger = FastifyBaseLogger,
368
+ Fn extends onErrorHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, FastifyError, SchemaCompiler, TypeProvider, Logger> | onErrorAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, FastifyError, SchemaCompiler, TypeProvider, Logger> = onErrorHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, FastifyError, SchemaCompiler, TypeProvider, Logger>
449
369
  >(
450
370
  name: 'onError',
451
- hook: onErrorHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, FastifyError, SchemaCompiler, TypeProvider, Logger>
452
- ): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
453
-
454
- addHook<
455
- RouteGeneric extends RouteGenericInterface = RouteGenericInterface,
456
- ContextConfig = ContextConfigDefault,
457
- SchemaCompiler extends FastifySchema = FastifySchema,
458
- Logger extends FastifyBaseLogger = FastifyBaseLogger
459
- >(
460
- name: 'onError',
461
- hook: onErrorAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, FastifyError, SchemaCompiler, TypeProvider, Logger>
371
+ hook: Fn extends unknown ? Fn extends AsyncFunction ? onErrorAsyncHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, FastifyError, SchemaCompiler, TypeProvider, Logger> : onErrorHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, FastifyError, SchemaCompiler, TypeProvider, Logger> : Fn,
462
372
  ): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
463
373
 
464
374
  // Application addHooks
@@ -489,41 +399,40 @@ export interface FastifyInstance<
489
399
  /**
490
400
  * 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.
491
401
  */
492
- addHook(
493
- name: 'onReady',
494
- hook: onReadyHookHandler
495
- ): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
496
-
497
- addHook(
402
+ addHook<
403
+ Fn extends onReadyHookHandler | onReadyAsyncHookHandler = onReadyHookHandler
404
+ >(
498
405
  name: 'onReady',
499
- hook: onReadyAsyncHookHandler,
406
+ hook: Fn extends unknown ? Fn extends AsyncFunction ? onReadyAsyncHookHandler : onReadyHookHandler : Fn,
500
407
  ): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
501
408
 
502
409
  /**
503
410
  * 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.
504
411
  */
505
- addHook(
412
+ addHook<
413
+ Fn extends onCloseHookHandler | onCloseAsyncHookHandler = onCloseHookHandler
414
+ >(
506
415
  name: 'onClose',
507
- hook: onCloseHookHandler<RawServer, RawRequest, RawReply, Logger, TypeProvider>
416
+ hook: Fn extends unknown ? Fn extends AsyncFunction ? onCloseAsyncHookHandler : onCloseHookHandler : Fn,
508
417
  ): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
509
418
 
510
- addHook(
511
- name: 'onClose',
512
- hook: onCloseAsyncHookHandler<RawServer, RawRequest, RawReply, Logger>
513
- ): FastifyInstance<RawServer, RawRequest, RawReply, Logger>;
514
-
515
419
  /**
516
420
  * 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.
517
421
  */
518
- addHook(
422
+ addHook<
423
+ Fn extends preCloseHookHandler | preCloseAsyncHookHandler = preCloseHookHandler
424
+ >(
519
425
  name: 'preClose',
520
- hook: preCloseHookHandler<RawServer, RawRequest, RawReply, Logger, TypeProvider>
426
+ hook: Fn extends unknown ? Fn extends AsyncFunction ? preCloseAsyncHookHandler : preCloseHookHandler : Fn,
521
427
  ): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
522
428
 
523
- addHook(
524
- name: 'preClose',
525
- hook: preCloseAsyncHookHandler<RawServer, RawRequest, RawReply, Logger>
526
- ): FastifyInstance<RawServer, RawRequest, RawReply, Logger>;
429
+ addHook<
430
+ K extends ApplicationHook | LifecycleHook,
431
+ Fn extends (...args: any) => Promise<any> | any
432
+ > (
433
+ name: K,
434
+ hook: Fn extends unknown ? Fn extends AsyncFunction ? HookAsyncLookup<K> : HookLookup<K> : Fn
435
+ ): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
527
436
 
528
437
  /**
529
438
  * Set the 404 handler
@@ -50,7 +50,7 @@ export interface FastifyRequest<RouteGeneric extends RouteGenericInterface = Rou
50
50
  // the RequestType (preferred) or swap Logger and RequestType arguments when
51
51
  // creating custom types of FastifyRequest. Related issue #4123
52
52
  > {
53
- id: any;
53
+ id: string;
54
54
  params: RequestType['params']; // deferred inference
55
55
  raw: RawRequest;
56
56
  query: RequestType['query'];
package/types/route.d.ts CHANGED
@@ -45,7 +45,12 @@ export interface RouteShorthandOptions<
45
45
  version?: string;
46
46
  constraints?: { [name: string]: any },
47
47
  prefixTrailingSlash?: 'slash'|'no-slash'|'both';
48
- errorHandler?: (this: FastifyInstance, error: FastifyError, request: FastifyRequest, reply: FastifyReply) => void;
48
+ errorHandler?: (
49
+ this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,
50
+ error: FastifyError,
51
+ request: FastifyRequest<RouteGeneric, RawServer, RawRequest, SchemaCompiler, TypeProvider, ContextConfig, Logger>,
52
+ reply: FastifyReply<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider>
53
+ ) => void;
49
54
  childLoggerFactory?: FastifyChildLoggerFactory<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
50
55
  schemaErrorFormatter?: SchemaErrorFormatter;
51
56
 
package/types/schema.d.ts CHANGED
@@ -28,7 +28,7 @@ export interface FastifySchemaValidationError {
28
28
  keyword: string;
29
29
  instancePath: string;
30
30
  schemaPath: string;
31
- params: Record<string, string | string[]>;
31
+ params: Record<string, unknown>;
32
32
  message?: string;
33
33
  }
34
34
 
@@ -7,7 +7,7 @@
7
7
  "strict": true
8
8
  },
9
9
  "include": [
10
- "/test/types/*.test-d.ts",
11
- "/types/*.d.ts"
10
+ "../test/types/**/*.test-d.ts",
11
+ "./**/*.d.ts"
12
12
  ]
13
13
  }