fastify 4.28.0 → 5.0.0-alpha.3

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 (514) hide show
  1. package/.idea/fastify.iml +12 -0
  2. package/.idea/inspectionProfiles/Project_Default.xml +6 -0
  3. package/.idea/jsLibraryMappings.xml +6 -0
  4. package/.idea/jsLinters/eslint.xml +6 -0
  5. package/.idea/modules.xml +8 -0
  6. package/.idea/vcs.xml +6 -0
  7. package/.markdownlint-cli2.yaml +1 -1
  8. package/.taprc +4 -8
  9. package/README.md +3 -6
  10. package/build/build-error-serializer.js +4 -1
  11. package/build/build-validation.js +5 -4
  12. package/docs/Guides/Database.md +1 -1
  13. package/docs/Guides/Delay-Accepting-Requests.md +3 -3
  14. package/docs/Guides/Ecosystem.md +2 -0
  15. package/docs/Guides/Migration-Guide-V5.md +20 -0
  16. package/docs/Guides/Write-Type-Provider.md +4 -2
  17. package/docs/Reference/ContentTypeParser.md +30 -1
  18. package/docs/Reference/Decorators.md +42 -16
  19. package/docs/Reference/Errors.md +10 -2
  20. package/docs/Reference/Hooks.md +48 -14
  21. package/docs/Reference/Logging.md +5 -5
  22. package/docs/Reference/Reply.md +23 -18
  23. package/docs/Reference/Request.md +5 -1
  24. package/docs/Reference/Routes.md +24 -28
  25. package/docs/Reference/Server.md +14 -53
  26. package/docs/Reference/Type-Providers.md +21 -26
  27. package/docs/Reference/TypeScript.md +46 -29
  28. package/docs/Reference/Warnings.md +0 -8
  29. package/eslint.config.js +27 -0
  30. package/examples/typescript-server.ts +14 -14
  31. package/fastify.d.ts +15 -14
  32. package/fastify.js +41 -15
  33. package/lib/configValidator.js +94 -76
  34. package/lib/contentTypeParser.js +54 -88
  35. package/lib/decorate.js +3 -7
  36. package/lib/error-serializer.js +2 -1
  37. package/lib/errors.js +31 -6
  38. package/lib/handleRequest.js +70 -39
  39. package/lib/httpMethods.js +34 -18
  40. package/lib/logger.js +24 -6
  41. package/lib/pluginUtils.js +5 -5
  42. package/lib/reply.js +7 -10
  43. package/lib/request.js +37 -19
  44. package/lib/route.js +6 -34
  45. package/lib/server.js +62 -123
  46. package/lib/warnings.js +24 -29
  47. package/lib/wrapThenable.js +46 -22
  48. package/package.json +38 -58
  49. package/test/404s.test.js +8 -12
  50. package/test/async-await.test.js +46 -2
  51. package/test/build/error-serializer.test.js +4 -2
  52. package/test/check.test.js +225 -0
  53. package/test/close-pipelining.test.js +2 -41
  54. package/test/close.test.js +1 -41
  55. package/test/content-parser.test.js +69 -117
  56. package/test/custom-parser.1.test.js +40 -1
  57. package/test/decorator-namespace.test._js_ +31 -0
  58. package/test/decorator.test.js +92 -43
  59. package/test/delete.test.js +21 -1
  60. package/test/diagnostics-channel/404.test.js +57 -0
  61. package/test/diagnostics-channel/async-delay-request.test.js +74 -0
  62. package/test/diagnostics-channel/async-request.test.js +72 -0
  63. package/test/diagnostics-channel/error-before-handler.test.js +36 -0
  64. package/test/diagnostics-channel/error-request.test.js +61 -0
  65. package/test/diagnostics-channel/error-status.test.js +39 -0
  66. package/test/{diagnostics-channel.test.js → diagnostics-channel/init.test.js} +6 -16
  67. package/test/diagnostics-channel/sync-delay-request.test.js +58 -0
  68. package/test/diagnostics-channel/sync-request-reply.test.js +58 -0
  69. package/test/diagnostics-channel/sync-request.test.js +61 -0
  70. package/test/encapsulated-error-handler.test.js +201 -14
  71. package/test/esm/index.test.js +2 -12
  72. package/test/findRoute.test.js +16 -0
  73. package/test/genReqId.test.js +9 -0
  74. package/test/get.test.js +28 -0
  75. package/test/has-route.test.js +1 -1
  76. package/test/helper.js +1 -5
  77. package/test/hooks.test.js +0 -4
  78. package/test/http2/constraint.test.js +22 -1
  79. package/test/http2/plain.test.js +21 -6
  80. package/test/http2/secure.test.js +12 -1
  81. package/test/https/https.test.js +57 -0
  82. package/test/inject.test.js +1 -2
  83. package/test/internals/decorator.test.js +0 -2
  84. package/test/internals/errors.test.js +57 -17
  85. package/test/internals/handleRequest.test.js +5 -1
  86. package/test/internals/initialConfig.test.js +5 -5
  87. package/test/internals/logger.test.js +31 -2
  88. package/test/internals/reply.test.js +6 -78
  89. package/test/internals/request.test.js +13 -11
  90. package/test/listen.1.test.js +5 -15
  91. package/test/listen.5.test.js +99 -0
  92. package/test/logger/instantiation.test.js +8 -8
  93. package/test/logger/logging.test.js +4 -4
  94. package/test/logger/options.test.js +102 -21
  95. package/test/logger/response.test.js +6 -6
  96. package/test/maxRequestsPerSocket.test.js +2 -5
  97. package/test/method-missing.test.js +24 -0
  98. package/test/plugin.1.test.js +2 -4
  99. package/test/plugin.2.test.js +0 -2
  100. package/test/plugin.3.test.js +0 -2
  101. package/test/plugin.4.test.js +92 -56
  102. package/test/register.test.js +2 -4
  103. package/test/reply-earlyHints.test.js +98 -0
  104. package/test/reply-error.test.js +0 -2
  105. package/test/route-hooks.test.js +0 -1
  106. package/test/route-shorthand.test.js +60 -0
  107. package/test/schema-special-usage.test.js +1 -1
  108. package/test/server.test.js +17 -2
  109. package/test/stream.2.test.js +1 -1
  110. package/test/stream.4.test.js +0 -42
  111. package/test/stream.5.test.js +2 -2
  112. package/test/trust-proxy.test.js +33 -27
  113. package/test/types/errors.test-d.ts +0 -2
  114. package/test/types/fastify.test-d.ts +14 -12
  115. package/test/types/hooks.test-d.ts +1 -0
  116. package/test/types/import.ts +1 -0
  117. package/test/types/instance.test-d.ts +10 -51
  118. package/test/types/logger.test-d.ts +43 -6
  119. package/test/types/plugin.test-d.ts +5 -2
  120. package/test/types/register.test-d.ts +2 -2
  121. package/test/types/reply.test-d.ts +13 -12
  122. package/test/types/request.test-d.ts +19 -8
  123. package/test/types/route.test-d.ts +30 -2
  124. package/test/types/schema.test-d.ts +2 -2
  125. package/test/types/serverFactory.test-d.ts +1 -1
  126. package/test/types/type-provider.test-d.ts +59 -12
  127. package/test/types/using.test-d.ts +4 -1
  128. package/test/url-rewriting.test.js +3 -2
  129. package/test/useSemicolonDelimiter.test.js +3 -6
  130. package/test/versioned-routes.test.js +1 -1
  131. package/test/web-api.test.js +0 -6
  132. package/types/content-type-parser.d.ts +3 -3
  133. package/types/context.d.ts +0 -1
  134. package/types/errors.d.ts +1 -0
  135. package/types/hooks.d.ts +6 -6
  136. package/types/instance.d.ts +28 -41
  137. package/types/logger.d.ts +3 -3
  138. package/types/plugin.d.ts +3 -3
  139. package/types/reply.d.ts +9 -12
  140. package/types/request.d.ts +5 -3
  141. package/types/route.d.ts +31 -31
  142. package/types/schema.d.ts +3 -3
  143. package/types/serverFactory.d.ts +2 -2
  144. package/types/type-provider.d.ts +22 -12
  145. package/types/utils.d.ts +18 -23
  146. package/.c8rc.json +0 -8
  147. package/.eslintrc +0 -4
  148. package/.tap/processinfo/029eb7a1-1942-40bc-98e2-cef3b7a14b5e.json +0 -268
  149. package/.tap/processinfo/03c196c6-01c3-4268-a9b5-298dff18a873.json +0 -269
  150. package/.tap/processinfo/04bbabba-8611-4908-9092-dfa9fcc13327.json +0 -268
  151. package/.tap/processinfo/05d8a743-3edf-4e2d-ae5a-dc99d0855ba5.json +0 -272
  152. package/.tap/processinfo/07718963-36a8-4d87-82ad-366c877a5247.json +0 -268
  153. package/.tap/processinfo/08fe3bde-5814-4308-9158-cdf1e47391b7.json +0 -268
  154. package/.tap/processinfo/0a3e3fb0-eabf-4532-ae80-20434da22678.json +0 -268
  155. package/.tap/processinfo/0caf2a75-4b3a-46c4-9b41-c7e450e5e15f.json +0 -268
  156. package/.tap/processinfo/0cf35d52-e5b2-4884-bcf0-b0ab3017b689.json +0 -268
  157. package/.tap/processinfo/0e666134-5013-4ecd-9ee6-59b22716c39c.json +0 -268
  158. package/.tap/processinfo/1087b811-4ec4-4f91-92b4-a78a51a437de.json +0 -268
  159. package/.tap/processinfo/13709ed3-b68c-42cf-8472-b0c4b8a89d2b.json +0 -268
  160. package/.tap/processinfo/13ac2f18-d0e0-439f-bc86-2ff0119af857.json +0 -268
  161. package/.tap/processinfo/13e47e0e-f6e8-4381-8a42-923b661f4a4f.json +0 -268
  162. package/.tap/processinfo/143f7d43-b8e8-4666-b482-f28fb37160ee.json +0 -268
  163. package/.tap/processinfo/14f3801d-03ab-4db3-9df5-c5d47e0a8cf0.json +0 -270
  164. package/.tap/processinfo/15a07dad-4bcd-442c-95e0-30c31f2b9818.json +0 -273
  165. package/.tap/processinfo/191ad3ad-04d8-4fb9-b119-ad2811f9b925.json +0 -243
  166. package/.tap/processinfo/1b25d54b-62d3-44cd-b581-31e705522fae.json +0 -268
  167. package/.tap/processinfo/1b7cb260-f04b-4135-a4fe-093081c4706f.json +0 -268
  168. package/.tap/processinfo/1e395d63-4815-4c77-aa47-df3709cc0ef9.json +0 -268
  169. package/.tap/processinfo/1e7f6a54-3abf-4771-863a-585cba110aec.json +0 -268
  170. package/.tap/processinfo/21a15e1d-0b41-47d8-b03d-0ba130969034.json +0 -244
  171. package/.tap/processinfo/21e02016-9ecd-4983-8417-9c74d224644f.json +0 -269
  172. package/.tap/processinfo/2327d941-d0d5-4762-b386-02a9a27ad28e.json +0 -268
  173. package/.tap/processinfo/23d39204-eac9-4f57-8db4-ffa996227fbd.json +0 -268
  174. package/.tap/processinfo/2493875a-0ac6-4d53-993c-f44471fd0678.json +0 -268
  175. package/.tap/processinfo/2698669f-f1e7-4a12-a687-8d58177be2b0.json +0 -269
  176. package/.tap/processinfo/2862b053-0a3d-46d7-9381-ffcb06287609.json +0 -268
  177. package/.tap/processinfo/2ac1b8d6-ac92-40e2-a59a-7681069f487c.json +0 -268
  178. package/.tap/processinfo/2c75e5f7-c4ef-47e4-a1c4-105eef6c0fab.json +0 -242
  179. package/.tap/processinfo/2e2c45cd-718b-4e5a-bf88-f801630f2803.json +0 -268
  180. package/.tap/processinfo/2f9ca478-3e03-4cce-a0bc-fcdc86d7c316.json +0 -268
  181. package/.tap/processinfo/30e3117f-fb74-456f-8f02-527e9eb9fcc3.json +0 -268
  182. package/.tap/processinfo/332be679-63c7-4b49-8b87-ef55995ada2d.json +0 -268
  183. package/.tap/processinfo/37c36f95-07f9-4ef0-8ab4-9e107d51b605.json +0 -269
  184. package/.tap/processinfo/3874eae2-f3db-44ef-9a9f-c8169d4b2b76.json +0 -268
  185. package/.tap/processinfo/38a7c3da-a411-41d0-8993-9deefd23500d.json +0 -268
  186. package/.tap/processinfo/3a7b6dbd-e153-4ce5-b557-21fb82009983.json +0 -269
  187. package/.tap/processinfo/3c6731ec-936d-470f-b7b0-0c87b54be051.json +0 -268
  188. package/.tap/processinfo/3c850ea9-4ef0-4044-a3fd-fbadfa9d543e.json +0 -268
  189. package/.tap/processinfo/3e4e15e0-a325-46f0-be57-5fd374560b7a.json +0 -269
  190. package/.tap/processinfo/3ed868e0-887c-402a-9f22-b1fdb74b4da0.json +0 -268
  191. package/.tap/processinfo/405498d7-5854-4ce1-a7dc-06920932f26d.json +0 -268
  192. package/.tap/processinfo/40b7eb19-ae35-4490-8a11-eb91a573c590.json +0 -268
  193. package/.tap/processinfo/40bb1260-d856-4248-8939-a0a05e322041.json +0 -268
  194. package/.tap/processinfo/41252e0b-7f69-44cc-b356-dd94bcbfdb29.json +0 -268
  195. package/.tap/processinfo/418fa710-e2fd-4508-b533-c179958da464.json +0 -269
  196. package/.tap/processinfo/433ef009-63aa-48fe-8e5d-c725228fa2fc.json +0 -268
  197. package/.tap/processinfo/44bf577c-9c01-4197-bd29-2e1ae888c4d4.json +0 -268
  198. package/.tap/processinfo/458fb7f2-20b9-48a2-8853-403c9851f605.json +0 -268
  199. package/.tap/processinfo/46b9892b-bb23-4b86-b0fa-9297f08c611a.json +0 -268
  200. package/.tap/processinfo/46bd9aaf-6cf3-4bd5-b90d-e136a7299a8e.json +0 -268
  201. package/.tap/processinfo/4779aa5f-e57a-4fcc-87e2-7d0bd4fca27f.json +0 -268
  202. package/.tap/processinfo/47b73f4b-ab31-49e1-97fd-8436dbe4bdf3.json +0 -269
  203. package/.tap/processinfo/49dba52e-e0c9-445d-8e9d-6d9ebe3ce6c4.json +0 -268
  204. package/.tap/processinfo/4b1dbc61-4e65-4c56-9784-2036f369038a.json +0 -268
  205. package/.tap/processinfo/4b6f0b40-43ef-4668-83a0-e07e28509df5.json +0 -268
  206. package/.tap/processinfo/4c236f70-f532-460b-8f7a-dd973301d493.json +0 -268
  207. package/.tap/processinfo/4d92b707-a268-48b8-885b-004d3a288c41.json +0 -269
  208. package/.tap/processinfo/4ff10bae-7c97-4c0a-b712-6c0d2f8c0e8e.json +0 -270
  209. package/.tap/processinfo/50f95bd5-ae12-4d83-99f4-ae9b0690c6a8.json +0 -268
  210. package/.tap/processinfo/557e4a49-d99c-4a63-b2f2-f33d897ab874.json +0 -268
  211. package/.tap/processinfo/589fd21a-8319-4abf-8cf7-82cb4a463a4b.json +0 -269
  212. package/.tap/processinfo/5a872f3a-949f-40be-8004-d739d034255c.json +0 -272
  213. package/.tap/processinfo/5abc301a-23da-424d-891e-3afbaff9156c.json +0 -269
  214. package/.tap/processinfo/5c31614c-a766-4837-ab59-dd6977166f72.json +0 -253
  215. package/.tap/processinfo/5d1e90c8-d819-4901-b022-f9ea4cd81978.json +0 -268
  216. package/.tap/processinfo/5d283e67-f31d-4fa8-a559-a1d8e82ee046.json +0 -269
  217. package/.tap/processinfo/5df505bc-6a4b-4c41-822f-51e2d7111de8.json +0 -268
  218. package/.tap/processinfo/5eaf64a2-fbfd-40e7-b391-c30f744b2bf1.json +0 -269
  219. package/.tap/processinfo/5ef5ede0-6436-4938-8401-d32ad4bffd5d.json +0 -268
  220. package/.tap/processinfo/606f05c0-8293-41db-bc92-eea82123697f.json +0 -269
  221. package/.tap/processinfo/6446806d-6cab-4c1d-a9ed-6bccaf3c4ea9.json +0 -268
  222. package/.tap/processinfo/64da7e08-925d-444d-98de-6568c6115d8d.json +0 -269
  223. package/.tap/processinfo/6917da6d-d2dc-466a-a893-7fb7412dde96.json +0 -268
  224. package/.tap/processinfo/69bbeee0-c398-4ccf-98b3-fb625a63bab4.json +0 -268
  225. package/.tap/processinfo/6da6ea8f-3370-4703-b230-90159531f766.json +0 -268
  226. package/.tap/processinfo/6ecffe1f-3016-4c11-9294-b488baced99f.json +0 -268
  227. package/.tap/processinfo/6f23f41f-ccbd-48cb-9ab6-311db0cfb65c.json +0 -270
  228. package/.tap/processinfo/70168912-9bb2-4334-bb89-041f1764cddf.json +0 -268
  229. package/.tap/processinfo/713a674e-40e1-46b4-866e-949d57c1a9f9.json +0 -270
  230. package/.tap/processinfo/730254d4-eacb-4cdf-80f4-8da22341cde5.json +0 -268
  231. package/.tap/processinfo/7344e559-c546-416f-8f1b-0f9fe12c6f02.json +0 -268
  232. package/.tap/processinfo/7556217a-0155-448f-b4d4-bec1bb0f6040.json +0 -269
  233. package/.tap/processinfo/7572079c-166c-4c4c-85ff-89b9430b214f.json +0 -268
  234. package/.tap/processinfo/7808180f-1974-47cd-bba2-2d6b8b711d65.json +0 -273
  235. package/.tap/processinfo/796dde83-da66-4db2-8d27-d45a3627c9c7.json +0 -268
  236. package/.tap/processinfo/7979819f-3723-48be-9f55-be700e689441.json +0 -270
  237. package/.tap/processinfo/7a664d39-d7f5-42f9-89df-15563048fab6.json +0 -268
  238. package/.tap/processinfo/7b047b72-01d9-4217-857c-93341651b4b3.json +0 -269
  239. package/.tap/processinfo/7ce41af6-7961-45ae-8c6f-b6e1c5692a48.json +0 -268
  240. package/.tap/processinfo/7e1de1c6-127e-463d-9357-081ee33ef5ce.json +0 -269
  241. package/.tap/processinfo/81ac7a7f-b0c0-4ef6-82cb-c718ea84e152.json +0 -268
  242. package/.tap/processinfo/851a058f-a497-4b10-a0b7-c9182d9c4d5a.json +0 -268
  243. package/.tap/processinfo/86502974-c245-4194-ade4-d9c6fdbb757e.json +0 -268
  244. package/.tap/processinfo/86b9786f-4a98-43b8-882a-5f936b876f08.json +0 -241
  245. package/.tap/processinfo/8a3fe726-86ab-4300-8d73-7eacbbc02a05.json +0 -268
  246. package/.tap/processinfo/8adf928b-c963-4ba0-9c35-606fcbd8a2aa.json +0 -272
  247. package/.tap/processinfo/8b31a6d8-1a33-4a27-93ca-1c5b364be068.json +0 -240
  248. package/.tap/processinfo/8ec12773-6b18-49a2-8e52-874c797df965.json +0 -833
  249. package/.tap/processinfo/8edb9502-3420-42fb-a602-e5de93be2df1.json +0 -268
  250. package/.tap/processinfo/8fc572e6-9828-4f98-a49c-9e081b2193c4.json +0 -242
  251. package/.tap/processinfo/8fee2d30-c5dd-4fae-9cf2-2ef8dd0f90de.json +0 -834
  252. package/.tap/processinfo/92cc0496-5f26-4370-8212-18136b972f99.json +0 -268
  253. package/.tap/processinfo/93a3f064-3f6e-4f49-becb-f7925f2961a9.json +0 -268
  254. package/.tap/processinfo/967e3697-8310-4a19-8dd5-927ac8bd6c79.json +0 -269
  255. package/.tap/processinfo/97225e23-9d30-4287-b3f5-72bccebec50b.json +0 -268
  256. package/.tap/processinfo/9a363bc6-4e65-47e8-94ca-26a9db428fb4.json +0 -268
  257. package/.tap/processinfo/9d2fe462-57fa-43f1-b02c-d188f15de30b.json +0 -270
  258. package/.tap/processinfo/a00b6cda-feb7-4b8a-8179-4c43bc29d670.json +0 -269
  259. package/.tap/processinfo/a017cbd5-4ac7-49e1-8c77-1bf4f6e7f2a6.json +0 -271
  260. package/.tap/processinfo/a1277309-1984-48f8-b60b-f5e8639736be.json +0 -271
  261. package/.tap/processinfo/a16bf53e-4337-48ff-88fa-67f55738e0f5.json +0 -268
  262. package/.tap/processinfo/a3a9848f-440e-41bb-9b0b-568bcfee0ddc.json +0 -268
  263. package/.tap/processinfo/a468c11f-f2f1-4e92-9ba0-6d28b6569b72.json +0 -268
  264. package/.tap/processinfo/a5880465-68f1-46b3-84a5-0da389d0bc67.json +0 -268
  265. package/.tap/processinfo/a666f394-39b4-44ad-8e74-abebf74dde3b.json +0 -270
  266. package/.tap/processinfo/af09d8ca-7053-4410-b514-b22c47f5979f.json +0 -268
  267. package/.tap/processinfo/af203309-28aa-459d-a56e-d88833695521.json +0 -268
  268. package/.tap/processinfo/afa2f7b6-dcd2-4d90-bf3c-54ba8b6800eb.json +0 -268
  269. package/.tap/processinfo/b231291d-ef14-4ff0-85f9-38a73a5408f8.json +0 -268
  270. package/.tap/processinfo/b3d3f2a1-a9fc-4d88-b122-fae90248cd59.json +0 -268
  271. package/.tap/processinfo/b834bf83-26c4-403a-8e91-eb15fe4b0b5d.json +0 -268
  272. package/.tap/processinfo/b8786fd7-47df-4ac1-8d6f-2d4c7623c681.json +0 -268
  273. package/.tap/processinfo/b9758f53-7f5a-4b03-8684-8a42ad644e5a.json +0 -268
  274. package/.tap/processinfo/bd194ea2-a21a-4604-b225-ee48abf1e607.json +0 -242
  275. package/.tap/processinfo/bd7ced53-3872-43b7-ad73-3352e50b728b.json +0 -268
  276. package/.tap/processinfo/be50295b-7e50-46cd-8bf1-637bf222699c.json +0 -268
  277. package/.tap/processinfo/bec61dd9-aa52-4e6c-8e37-5c9c10e935fd.json +0 -268
  278. package/.tap/processinfo/c015adf9-1d60-447e-87b5-b2031fe55bba.json +0 -268
  279. package/.tap/processinfo/c0666afa-7f64-45bd-97fb-145df1380157.json +0 -268
  280. package/.tap/processinfo/c2c0c012-c1c0-4457-84d6-dadba8396c94.json +0 -268
  281. package/.tap/processinfo/c3dd3ecd-737b-47ce-a917-54341c7bbed3.json +0 -268
  282. package/.tap/processinfo/c41ac06d-64b8-4bb3-bf56-0551f5a48f4b.json +0 -268
  283. package/.tap/processinfo/c4235bfb-a2aa-4271-9c6b-3ceb370219b1.json +0 -268
  284. package/.tap/processinfo/c4e6f24f-288c-493c-b6f0-02924aeb6758.json +0 -270
  285. package/.tap/processinfo/c54227bb-4a7b-40bb-bfe6-b54fe55078f3.json +0 -268
  286. package/.tap/processinfo/c699de91-3b0b-4466-9418-6910a3eb640a.json +0 -269
  287. package/.tap/processinfo/c74e2f37-451a-4577-ac18-e597fbd9a1d4.json +0 -269
  288. package/.tap/processinfo/c90cccec-5b4b-445f-a935-ac22859675d0.json +0 -252
  289. package/.tap/processinfo/c9dd6c7d-0d16-45e5-87ae-117388bf2994.json +0 -268
  290. package/.tap/processinfo/ca2e48fb-58c5-47fc-ad2e-263838aea42c.json +0 -272
  291. package/.tap/processinfo/ca87351d-c710-45c1-838a-16bccac59874.json +0 -273
  292. package/.tap/processinfo/cdb4a671-5776-4944-91b9-c456c58841ef.json +0 -268
  293. package/.tap/processinfo/cf10fdc8-6a87-447a-9e12-45f447af61f3.json +0 -244
  294. package/.tap/processinfo/cf3f1f08-643e-4f24-82ca-40f7a349c3d1.json +0 -268
  295. package/.tap/processinfo/d091172a-06a5-469b-82a9-8fefe3dd99da.json +0 -240
  296. package/.tap/processinfo/d1675431-61d6-45f8-a010-6e654112a00a.json +0 -272
  297. package/.tap/processinfo/d2d54aa2-c221-4ad4-b6b7-0c58e3c3679c.json +0 -269
  298. package/.tap/processinfo/d4f3c95a-ddbe-419d-bce0-dd6acceee21f.json +0 -268
  299. package/.tap/processinfo/d54ed8f1-43c3-478a-90d3-2c8aced723f2.json +0 -269
  300. package/.tap/processinfo/d6e5a2a6-4647-4d98-916c-aec4ace54a65.json +0 -268
  301. package/.tap/processinfo/d7280c64-45e6-4b12-affc-3ac9a5d4014a.json +0 -268
  302. package/.tap/processinfo/d82c8367-d825-4405-88df-07298f6ef840.json +0 -269
  303. package/.tap/processinfo/d8f97e53-e921-4d33-9c8d-2f7e807a9425.json +0 -268
  304. package/.tap/processinfo/da546a73-9714-4f8c-bdbb-e42730edbcfa.json +0 -268
  305. package/.tap/processinfo/da7fb7fb-1da4-49f8-a3ee-d4ea623c01a5.json +0 -268
  306. package/.tap/processinfo/daa6a016-4f0c-4050-923c-2022e0bb21d8.json +0 -268
  307. package/.tap/processinfo/db9a251d-8540-4719-b464-e7d5febd97d1.json +0 -240
  308. package/.tap/processinfo/dc10c603-8e58-4611-baa3-44da2578d07a.json +0 -268
  309. package/.tap/processinfo/dde56c1a-858c-47cc-b0bb-61279620ac17.json +0 -268
  310. package/.tap/processinfo/e0d9c4ea-f7c7-4c64-8ced-66dc6f0ac5d2.json +0 -271
  311. package/.tap/processinfo/e121454f-5dfa-4209-ba15-4c39840871f2.json +0 -831
  312. package/.tap/processinfo/e1f43e40-c3fe-4eb8-a713-d5910cc6b25a.json +0 -268
  313. package/.tap/processinfo/e4575e7a-f00e-488b-94e1-8f877b54725e.json +0 -268
  314. package/.tap/processinfo/e9ad667e-8603-4488-af64-449cc9532803.json +0 -268
  315. package/.tap/processinfo/eb26a697-e5e2-4730-aeea-bcb9c49afd4d.json +0 -268
  316. package/.tap/processinfo/eb29d1c3-feaf-4744-9d84-cf257e8269b0.json +0 -268
  317. package/.tap/processinfo/ee720c0a-ed64-4e7e-8c0a-139c7b9725d2.json +0 -268
  318. package/.tap/processinfo/ef88c13a-87b2-49e4-a683-7b812505cd6f.json +0 -268
  319. package/.tap/processinfo/f4ed6948-dac0-4128-9f86-d083b6918ea7.json +0 -268
  320. package/.tap/processinfo/f7544c01-8ac7-4e42-8ad5-c4d62e094d1f.json +0 -270
  321. package/.tap/processinfo/f7cee4b3-7bcc-4591-a628-5629b0b41c9e.json +0 -268
  322. package/.tap/processinfo/f9c0a1f7-c1a4-44d3-ae3f-8c1eb42cd746.json +0 -269
  323. package/.tap/processinfo/fc46b4da-79db-4201-af7e-34bb17f92d69.json +0 -270
  324. package/.tap/processinfo/fccc0056-03c4-40cb-9d0b-2db4bbe573c1.json +0 -268
  325. package/.tap/processinfo/fd2df572-54d7-4ce7-b7aa-a2b4b00d4127.json +0 -254
  326. package/.tap/processinfo/fea9377f-b473-484d-bee6-ac7f49e50937.json +0 -269
  327. package/.tap/processinfo/feb516dc-abda-46e6-9b42-d37adfc63366.json +0 -268
  328. package/.tap/processinfo/ff0fda4c-aa2e-4236-906e-fdfb6bd6632e.json +0 -269
  329. package/.tap/test-results/test/404s.test.js.tap +0 -623
  330. package/.tap/test-results/test/500s.test.js.tap +0 -64
  331. package/.tap/test-results/test/allowUnsafeRegex.test.js.tap +0 -36
  332. package/.tap/test-results/test/als.test.js.tap +0 -15
  333. package/.tap/test-results/test/async-await.test.js.tap +0 -184
  334. package/.tap/test-results/test/async-dispose.test.js.tap +0 -8
  335. package/.tap/test-results/test/async_hooks.test.js.tap +0 -10
  336. package/.tap/test-results/test/bodyLimit.test.js.tap +0 -48
  337. package/.tap/test-results/test/buffer.test.js.tap +0 -20
  338. package/.tap/test-results/test/build/error-serializer.test.js.tap +0 -8
  339. package/.tap/test-results/test/build/version.test.js.tap +0 -7
  340. package/.tap/test-results/test/case-insensitive.test.js.tap +0 -36
  341. package/.tap/test-results/test/chainable.test.js.tap +0 -17
  342. package/.tap/test-results/test/check.test.js.tap +0 -10
  343. package/.tap/test-results/test/childLoggerFactory.test.js.tap +0 -23
  344. package/.tap/test-results/test/client-timeout.test.js.tap +0 -7
  345. package/.tap/test-results/test/close-pipelining.test.js.tap +0 -15
  346. package/.tap/test-results/test/close.test.js.tap +0 -172
  347. package/.tap/test-results/test/connectionTimeout.test.js.tap +0 -12
  348. package/.tap/test-results/test/constrained-routes.test.js.tap +0 -173
  349. package/.tap/test-results/test/content-length.test.js.tap +0 -46
  350. package/.tap/test-results/test/content-parser.test.js.tap +0 -266
  351. package/.tap/test-results/test/content-type.test.js.tap +0 -14
  352. package/.tap/test-results/test/context-config.test.js.tap +0 -41
  353. package/.tap/test-results/test/copy.test.js.tap +0 -14
  354. package/.tap/test-results/test/custom-http-server.test.js.tap +0 -30
  355. package/.tap/test-results/test/custom-parser-async.test.js.tap +0 -21
  356. package/.tap/test-results/test/custom-parser.0.test.js.tap +0 -199
  357. package/.tap/test-results/test/custom-parser.1.test.js.tap +0 -90
  358. package/.tap/test-results/test/custom-parser.2.test.js.tap +0 -22
  359. package/.tap/test-results/test/custom-parser.3.test.js.tap +0 -53
  360. package/.tap/test-results/test/custom-parser.4.test.js.tap +0 -45
  361. package/.tap/test-results/test/custom-parser.5.test.js.tap +0 -41
  362. package/.tap/test-results/test/custom-querystring-parser.test.js.tap +0 -46
  363. package/.tap/test-results/test/decorator.test.js.tap +0 -465
  364. package/.tap/test-results/test/delete.test.js.tap +0 -110
  365. package/.tap/test-results/test/diagnostics-channel/404.test.js.tap +0 -15
  366. package/.tap/test-results/test/diagnostics-channel/async-delay-request.test.js.tap +0 -25
  367. package/.tap/test-results/test/diagnostics-channel/async-request.test.js.tap +0 -24
  368. package/.tap/test-results/test/diagnostics-channel/error-before-handler.test.js.tap +0 -9
  369. package/.tap/test-results/test/diagnostics-channel/error-request.test.js.tap +0 -20
  370. package/.tap/test-results/test/diagnostics-channel/error-status.test.js.tap +0 -10
  371. package/.tap/test-results/test/diagnostics-channel/init.test.js.tap +0 -14
  372. package/.tap/test-results/test/diagnostics-channel/sync-delay-request.test.js.tap +0 -16
  373. package/.tap/test-results/test/diagnostics-channel/sync-request-reply.test.js.tap +0 -16
  374. package/.tap/test-results/test/diagnostics-channel/sync-request.test.js.tap +0 -19
  375. package/.tap/test-results/test/encapsulated-child-logger-factory.test.js.tap +0 -18
  376. package/.tap/test-results/test/encapsulated-error-handler.test.js.tap +0 -243
  377. package/.tap/test-results/test/esm/errorCodes.test.mjs.tap +0 -9
  378. package/.tap/test-results/test/esm/esm.test.mjs.tap +0 -8
  379. package/.tap/test-results/test/esm/index.test.js.tap +0 -8
  380. package/.tap/test-results/test/fastify-instance.test.js.tap +0 -114
  381. package/.tap/test-results/test/findRoute.test.js.tap +0 -37
  382. package/.tap/test-results/test/fluent-schema.test.js.tap +0 -36
  383. package/.tap/test-results/test/genReqId.test.js.tap +0 -106
  384. package/.tap/test-results/test/get.test.js.tap +0 -151
  385. package/.tap/test-results/test/handler-context.test.js.tap +0 -19
  386. package/.tap/test-results/test/has-route.test.js.tap +0 -30
  387. package/.tap/test-results/test/head.test.js.tap +0 -130
  388. package/.tap/test-results/test/header-overflow.test.js.tap +0 -16
  389. package/.tap/test-results/test/hooks-async.test.js.tap +0 -286
  390. package/.tap/test-results/test/hooks.on-listen.test.js.tap +0 -311
  391. package/.tap/test-results/test/hooks.on-ready.test.js.tap +0 -151
  392. package/.tap/test-results/test/hooks.test.js.tap +0 -966
  393. package/.tap/test-results/test/http2/closing.test.js.tap +0 -35
  394. package/.tap/test-results/test/http2/constraint.test.js.tap +0 -32
  395. package/.tap/test-results/test/http2/head.test.js.tap +0 -9
  396. package/.tap/test-results/test/http2/missing-http2-module.test.js.tap +0 -8
  397. package/.tap/test-results/test/http2/plain.test.js.tap +0 -22
  398. package/.tap/test-results/test/http2/secure-with-fallback.test.js.tap +0 -40
  399. package/.tap/test-results/test/http2/secure.test.js.tap +0 -27
  400. package/.tap/test-results/test/http2/unknown-http-method.test.js.tap +0 -9
  401. package/.tap/test-results/test/https/custom-https-server.test.js.tap +0 -10
  402. package/.tap/test-results/test/https/https.test.js.tap +0 -45
  403. package/.tap/test-results/test/imports.test.js.tap +0 -14
  404. package/.tap/test-results/test/inject.test.js.tap +0 -165
  405. package/.tap/test-results/test/internals/all.test.js.tap +0 -42
  406. package/.tap/test-results/test/internals/contentTypeParser.test.js.tap +0 -14
  407. package/.tap/test-results/test/internals/context.test.js.tap +0 -14
  408. package/.tap/test-results/test/internals/decorator.test.js.tap +0 -51
  409. package/.tap/test-results/test/internals/errors.test.js.tap +0 -1212
  410. package/.tap/test-results/test/internals/handleRequest.test.js.tap +0 -69
  411. package/.tap/test-results/test/internals/hookRunner.test.js.tap +0 -143
  412. package/.tap/test-results/test/internals/hooks.test.js.tap +0 -45
  413. package/.tap/test-results/test/internals/initialConfig.test.js.tap +0 -125
  414. package/.tap/test-results/test/internals/logger.test.js.tap +0 -71
  415. package/.tap/test-results/test/internals/plugin.test.js.tap +0 -48
  416. package/.tap/test-results/test/internals/reply-serialize.test.js.tap +0 -166
  417. package/.tap/test-results/test/internals/reply.test.js.tap +0 -688
  418. package/.tap/test-results/test/internals/reqIdGenFactory.test.js.tap +0 -74
  419. package/.tap/test-results/test/internals/request-validate.test.js.tap +0 -384
  420. package/.tap/test-results/test/internals/request.test.js.tap +0 -163
  421. package/.tap/test-results/test/internals/server.test.js.tap +0 -30
  422. package/.tap/test-results/test/internals/validation.test.js.tap +0 -121
  423. package/.tap/test-results/test/keepAliveTimeout.test.js.tap +0 -12
  424. package/.tap/test-results/test/listen.1.test.js.tap +0 -31
  425. package/.tap/test-results/test/listen.2.test.js.tap +0 -46
  426. package/.tap/test-results/test/listen.3.test.js.tap +0 -25
  427. package/.tap/test-results/test/listen.4.test.js.tap +0 -51
  428. package/.tap/test-results/test/lock.test.js.tap +0 -29
  429. package/.tap/test-results/test/logger/instantiation.test.js.tap +0 -92
  430. package/.tap/test-results/test/logger/logging.test.js.tap +0 -117
  431. package/.tap/test-results/test/logger/options.test.js.tap +0 -165
  432. package/.tap/test-results/test/logger/request.test.js.tap +0 -82
  433. package/.tap/test-results/test/logger/response.test.js.tap +0 -38
  434. package/.tap/test-results/test/maxRequestsPerSocket.test.js.tap +0 -44
  435. package/.tap/test-results/test/method-missing.test.js.tap +0 -8
  436. package/.tap/test-results/test/middleware.test.js.tap +0 -17
  437. package/.tap/test-results/test/mkcalendar.test.js.tap +0 -43
  438. package/.tap/test-results/test/mkcol.test.js.tap +0 -14
  439. package/.tap/test-results/test/move.test.js.tap +0 -15
  440. package/.tap/test-results/test/noop-set.test.js.tap +0 -8
  441. package/.tap/test-results/test/nullable-validation.test.js.tap +0 -36
  442. package/.tap/test-results/test/options.error-handler.test.js.tap +0 -186
  443. package/.tap/test-results/test/options.test.js.tap +0 -174
  444. package/.tap/test-results/test/output-validation.test.js.tap +0 -66
  445. package/.tap/test-results/test/patch.error-handler.test.js.tap +0 -206
  446. package/.tap/test-results/test/patch.test.js.tap +0 -182
  447. package/.tap/test-results/test/plugin.1.test.js.tap +0 -78
  448. package/.tap/test-results/test/plugin.2.test.js.tap +0 -102
  449. package/.tap/test-results/test/plugin.3.test.js.tap +0 -58
  450. package/.tap/test-results/test/plugin.4.test.js.tap +0 -164
  451. package/.tap/test-results/test/post-empty-body.test.js.tap +0 -8
  452. package/.tap/test-results/test/pretty-print.test.js.tap +0 -82
  453. package/.tap/test-results/test/promises.test.js.tap +0 -46
  454. package/.tap/test-results/test/propfind.test.js.tap +0 -43
  455. package/.tap/test-results/test/proppatch.test.js.tap +0 -29
  456. package/.tap/test-results/test/proto-poisoning.test.js.tap +0 -47
  457. package/.tap/test-results/test/put.error-handler.test.js.tap +0 -206
  458. package/.tap/test-results/test/put.test.js.tap +0 -182
  459. package/.tap/test-results/test/register.test.js.tap +0 -61
  460. package/.tap/test-results/test/reply-code.test.js.tap +0 -40
  461. package/.tap/test-results/test/reply-earlyHints.test.js.tap +0 -22
  462. package/.tap/test-results/test/reply-error.test.js.tap +0 -643
  463. package/.tap/test-results/test/reply-trailers.test.js.tap +0 -176
  464. package/.tap/test-results/test/report.test.js.tap +0 -43
  465. package/.tap/test-results/test/request-error.test.js.tap +0 -98
  466. package/.tap/test-results/test/request-id.test.js.tap +0 -38
  467. package/.tap/test-results/test/request.deprecated.test.js.tap +0 -13
  468. package/.tap/test-results/test/requestTimeout.test.js.tap +0 -21
  469. package/.tap/test-results/test/route-hooks.test.js.tap +0 -498
  470. package/.tap/test-results/test/route-prefix.test.js.tap +0 -195
  471. package/.tap/test-results/test/route-shorthand.test.js.tap +0 -190
  472. package/.tap/test-results/test/route.1.test.js.tap +0 -93
  473. package/.tap/test-results/test/route.2.test.js.tap +0 -28
  474. package/.tap/test-results/test/route.3.test.js.tap +0 -39
  475. package/.tap/test-results/test/route.4.test.js.tap +0 -32
  476. package/.tap/test-results/test/route.5.test.js.tap +0 -54
  477. package/.tap/test-results/test/route.6.test.js.tap +0 -81
  478. package/.tap/test-results/test/route.7.test.js.tap +0 -93
  479. package/.tap/test-results/test/route.8.test.js.tap +0 -38
  480. package/.tap/test-results/test/router-options.test.js.tap +0 -104
  481. package/.tap/test-results/test/same-shape.test.js.tap +0 -22
  482. package/.tap/test-results/test/schema-examples.test.js.tap +0 -85
  483. package/.tap/test-results/test/schema-feature.test.js.tap +0 -445
  484. package/.tap/test-results/test/schema-serialization.test.js.tap +0 -194
  485. package/.tap/test-results/test/schema-special-usage.test.js.tap +0 -186
  486. package/.tap/test-results/test/schema-validation.test.js.tap +0 -199
  487. package/.tap/test-results/test/search.test.js.tap +0 -77
  488. package/.tap/test-results/test/serialize-response.test.js.tap +0 -26
  489. package/.tap/test-results/test/server.test.js.tap +0 -65
  490. package/.tap/test-results/test/set-error-handler.test.js.tap +0 -7
  491. package/.tap/test-results/test/skip-reply-send.test.js.tap +0 -272
  492. package/.tap/test-results/test/stream.1.test.js.tap +0 -36
  493. package/.tap/test-results/test/stream.2.test.js.tap +0 -20
  494. package/.tap/test-results/test/stream.3.test.js.tap +0 -34
  495. package/.tap/test-results/test/stream.4.test.js.tap +0 -40
  496. package/.tap/test-results/test/stream.5.test.js.tap +0 -37
  497. package/.tap/test-results/test/sync-routes.test.js.tap +0 -19
  498. package/.tap/test-results/test/throw.test.js.tap +0 -116
  499. package/.tap/test-results/test/trace.test.js.tap +0 -7
  500. package/.tap/test-results/test/trust-proxy.test.js.tap +0 -109
  501. package/.tap/test-results/test/type-provider.test.js.tap +0 -12
  502. package/.tap/test-results/test/unlock.test.js.tap +0 -14
  503. package/.tap/test-results/test/upgrade.test.js.tap +0 -8
  504. package/.tap/test-results/test/url-rewriting.test.js.tap +0 -39
  505. package/.tap/test-results/test/useSemicolonDelimiter.test.js.tap +0 -33
  506. package/.tap/test-results/test/validation-error-handling.test.js.tap +0 -180
  507. package/.tap/test-results/test/versioned-routes.test.js.tap +0 -151
  508. package/.tap/test-results/test/web-api.test.js.tap +0 -51
  509. package/.tap/test-results/test/wrapThenable.test.js.tap +0 -11
  510. package/EXPENSE_POLICY.md +0 -105
  511. package/test/default-route.test.js +0 -88
  512. package/test/listen.deprecated.test.js +0 -229
  513. package/test/unsupported-httpversion.test.js +0 -31
  514. package/types/.eslintrc.json +0 -48
@@ -58,6 +58,8 @@ since the request was received by Fastify.
58
58
  - `.getHeaders()` - Gets a shallow copy of all current response headers.
59
59
  - `.removeHeader(key)` - Remove the value of a previously set header.
60
60
  - `.hasHeader(name)` - Determine if a header has been set.
61
+ - `.writeEarlyHints(hints, callback)` - Sends early hints to the user
62
+ while the response is being prepared.
61
63
  - `.trailer(key, function)` - Sets a response trailer.
62
64
  - `.hasTrailer(key)` - Determine if a trailer has been set.
63
65
  - `.removeTrailer(key)` - Remove the value of a previously set trailer.
@@ -90,8 +92,6 @@ since the request was received by Fastify.
90
92
  from Node core.
91
93
  - `.log` - The logger instance of the incoming request.
92
94
  - `.request` - The incoming request.
93
- - `.getResponseTime()` - Deprecated, returns the amount of time passed
94
- since the request was received by Fastify.
95
95
  - `.context` - Deprecated, access the [Request's context](./Request.md) property.
96
96
 
97
97
  ```js
@@ -243,6 +243,27 @@ reply.getHeader('x-foo') // undefined
243
243
 
244
244
  Returns a boolean indicating if the specified header has been set.
245
245
 
246
+ ### .writeEarlyHints(hints, callback)
247
+ <a id="writeEarlyHints"></a>
248
+
249
+ Sends early hints to the client. Early hints allow the client to
250
+ start processing resources before the final response is sent.
251
+ This can improve performance by allowing the client to preload
252
+ or preconnect to resources while the server is still generating the response.
253
+
254
+ The hints parameter is an object containing the early hint key-value pairs.
255
+
256
+ Example:
257
+
258
+ ```js
259
+ reply.writeEarlyHints({
260
+ Link: '</styles.css>; rel=preload; as=style'
261
+ });
262
+ ```
263
+
264
+ The optional callback parameter is a function that will be called
265
+ once the hint is sent or if an error occurs.
266
+
246
267
  ### .trailer(key, function)
247
268
  <a id="trailer"></a>
248
269
 
@@ -343,22 +364,6 @@ hook specified in [`setNotFoundHandler`](./Server.md#set-not-found-handler).
343
364
  reply.callNotFound()
344
365
  ```
345
366
 
346
- ### .getResponseTime()
347
- <a id="getResponseTime"></a>
348
-
349
- Invokes the custom response time getter to calculate the amount of time passed
350
- since the request was received by Fastify.
351
-
352
- Note that unless this function is called in the [`onResponse`
353
- hook](./Hooks.md#onresponse) it will always return `0`.
354
-
355
- ```js
356
- const milliseconds = reply.getResponseTime()
357
- ```
358
-
359
- *Note: This method is deprecated and will be removed in `fastify@5`.
360
- Use the [.elapsedTime](#elapsedtime) property instead.*
361
-
362
367
  ### .type(contentType)
363
368
  <a id="type"></a>
364
369
 
@@ -20,10 +20,12 @@ Request is a core Fastify object containing the following fields:
20
20
  - `ips` - an array of the IP addresses, ordered from closest to furthest, in the
21
21
  `X-Forwarded-For` header of the incoming request (only when the
22
22
  [`trustProxy`](./Server.md#factory-trust-proxy) option is enabled)
23
- - `hostname` - the host of the incoming request (derived from `X-Forwarded-Host`
23
+ - `host` - the host of the incoming request (derived from `X-Forwarded-Host`
24
24
  header when the [`trustProxy`](./Server.md#factory-trust-proxy) option is
25
25
  enabled). For HTTP/2 compatibility it returns `:authority` if no host header
26
26
  exists.
27
+ - `hostname` - the host of the incoming request without the port
28
+ - `port` - the port that the server is listening on
27
29
  - `protocol` - the protocol of the incoming request (`https` or `http`)
28
30
  - `method` - the method of the incoming request
29
31
  - `url` - the URL of the incoming request
@@ -104,7 +106,9 @@ fastify.post('/:params', options, function (request, reply) {
104
106
  console.log(request.id)
105
107
  console.log(request.ip)
106
108
  console.log(request.ips)
109
+ console.log(request.host)
107
110
  console.log(request.hostname)
111
+ console.log(request.port)
108
112
  console.log(request.protocol)
109
113
  console.log(request.url)
110
114
  console.log(request.routeOptions.method)
@@ -190,6 +190,24 @@ The above route declaration is more *Hapi*-like, but if you prefer an
190
190
 
191
191
  `fastify.patch(path, [options], handler)`
192
192
 
193
+ `fastify.propfind(path, [options], handler)`
194
+
195
+ `fastify.proppatch(path, [options], handler)`
196
+
197
+ `fastify.mkcol(path, [options], handler)`
198
+
199
+ `fastify.copy(path, [options], handler)`
200
+
201
+ `fastify.move(path, [options], handler)`
202
+
203
+ `fastify.lock(path, [options], handler)`
204
+
205
+ `fastify.unlock(path, [options], handler)`
206
+
207
+ `fastify.trace(path, [options], handler)`
208
+
209
+ `fastify.search(path, [options], handler)`
210
+
193
211
  Example:
194
212
  ```js
195
213
  const opts = {
@@ -468,14 +486,14 @@ const route = {
468
486
  schema: {},
469
487
  }
470
488
 
471
- fastify.register(function(app, _, done) {
489
+ fastify.register(function (app, _, done) {
472
490
  app.get('/users', () => {})
473
491
  app.route(route)
474
492
 
475
493
  done()
476
494
  }, { prefix: '/v1' }) // global route prefix
477
495
 
478
- await fastify.listen({ port: 0 })
496
+ await fastify.listen({ port: 3000 })
479
497
  ```
480
498
 
481
499
  ### Route Prefixing and fastify-plugin
@@ -578,7 +596,7 @@ const fastify = Fastify({
578
596
  method: req.method,
579
597
  url: req.url,
580
598
  headers: req.headers,
581
- hostname: req.hostname,
599
+ host: req.host,
582
600
  remoteAddress: req.ip,
583
601
  remotePort: req.socket.remotePort
584
602
  }
@@ -750,7 +768,7 @@ matching wildcard subdomains (or any other pattern):
750
768
  fastify.route({
751
769
  method: 'GET',
752
770
  url: '/',
753
- constraints: { host: /.*\.fastify\.io/ }, // will match any subdomain of fastify.dev
771
+ constraints: { host: /.*\.fastify\.dev/ }, // will match any subdomain of fastify.dev
754
772
  handler: function (request, reply) {
755
773
  reply.send('hello world from ' + request.headers.host)
756
774
  }
@@ -799,8 +817,8 @@ const secret = {
799
817
  > const Fastify = require('fastify')
800
818
  >
801
819
  > const fastify = Fastify({
802
- > frameworkErrors: function(err, res, res) {
803
- > if(err instanceof Fastify.errorCodes.FST_ERR_ASYNC_CONSTRAINT) {
820
+ > frameworkErrors: function (err, res, res) {
821
+ > if (err instanceof Fastify.errorCodes.FST_ERR_ASYNC_CONSTRAINT) {
804
822
  > res.code(400)
805
823
  > return res.send("Invalid header provided")
806
824
  > } else {
@@ -809,25 +827,3 @@ const secret = {
809
827
  > }
810
828
  > })
811
829
  > ```
812
-
813
-
814
- ### ⚠ HTTP version check
815
-
816
- Fastify will check the HTTP version of every request, based on configuration
817
- options ([http2](./Server.md#http2), [https](./Server.md#https), and
818
- [serverFactory](./Server.md#serverfactory)), to determine if it matches one or
819
- all of the > following versions: `2.0`, `1.1`, and `1.0`. If Fastify receives a
820
- different HTTP version in the request it will return a `505 HTTP Version Not
821
- Supported` error.
822
-
823
- | | 2.0 | 1.1 | 1.0 | skip |
824
- |:------------------------:|:---:|:---:|:---:|:----:|
825
- | http2 | ✓ | | | |
826
- | http2 + https | ✓ | | | |
827
- | http2 + https.allowHTTP1 | ✓ | ✓ | ✓ | |
828
- | https | | ✓ | ✓ | |
829
- | http | | ✓ | ✓ | |
830
- | serverFactory | | | | ✓ |
831
-
832
- Note: The internal HTTP version check will be removed in the future when Node
833
- implements [this feature](https://github.com/nodejs/node/issues/43115).
@@ -53,8 +53,6 @@ describes the properties available in that options object.
53
53
  - [listen](#listen)
54
54
  - [`listenTextResolver`](#listentextresolver)
55
55
  - [addresses](#addresses)
56
- - [getDefaultRoute](#getdefaultroute)
57
- - [setDefaultRoute](#setdefaultroute)
58
56
  - [routing](#routing)
59
57
  - [route](#route)
60
58
  - [hasRoute](#hasroute)
@@ -527,7 +525,15 @@ fastify.get('/user/:id(^([0-9]+){4}$)', (request, reply) => {
527
525
 
528
526
  The header name used to set the request-id. See [the
529
527
  request-id](./Logging.md#logging-request-id) section.
530
- Setting `requestIdHeader` to `false` will always use [genReqId](#genreqid).
528
+ Setting `requestIdHeader` to `true` will set the `requestIdHeader` to
529
+ `"request-id"`.
530
+ Setting `requestIdHeader` to a non-empty string will use
531
+ the specified string as the `requestIdHeader`.
532
+ By default `requestIdHeader` is set to `false` and will immediately use [genReqId](#genreqid).
533
+ Setting `requestIdHeader` to an empty String (`""`) will set the
534
+ requestIdHeader to `false`.
535
+
536
+ + Default: `false`
531
537
 
532
538
  ```js
533
539
  const fastify = require('fastify')({
@@ -596,14 +602,14 @@ const fastify = Fastify({ trustProxy: true })
596
602
  For more examples, refer to the
597
603
  [`proxy-addr`](https://www.npmjs.com/package/proxy-addr) package.
598
604
 
599
- You may access the `ip`, `ips`, `hostname` and `protocol` values on the
605
+ You may access the `ip`, `ips`, `host` and `protocol` values on the
600
606
  [`request`](./Request.md) object.
601
607
 
602
608
  ```js
603
609
  fastify.get('/', (request, reply) => {
604
610
  console.log(request.ip)
605
611
  console.log(request.ips)
606
- console.log(request.hostname)
612
+ console.log(request.host)
607
613
  console.log(request.protocol)
608
614
  })
609
615
  ```
@@ -871,14 +877,14 @@ function rewriteUrl (req) {
871
877
  ### `useSemicolonDelimiter`
872
878
  <a id="use-semicolon-delimiter"></a>
873
879
 
874
- + Default `true`
880
+ + Default `false`
875
881
 
876
882
  Fastify uses [find-my-way](https://github.com/delvedor/find-my-way) which supports,
877
883
  separating the path and query string with a `;` character (code 59), e.g. `/dev;foo=bar`.
878
884
  This decision originated from [delvedor/find-my-way#76]
879
885
  (https://github.com/delvedor/find-my-way/issues/76). Thus, this option will support
880
- backwards compatibility for the need to split on `;`. To disable support for splitting
881
- on `;` set `useSemicolonDelimiter` to `false`.
886
+ backwards compatiblilty for the need to split on `;`. To enable support for splitting
887
+ on `;` set `useSemicolonDelimiter` to `true`.
882
888
 
883
889
  ```js
884
890
  const fastify = require('fastify')({
@@ -1101,51 +1107,6 @@ const addresses = fastify.addresses()
1101
1107
 
1102
1108
  Note that the array contains the `fastify.server.address()` too.
1103
1109
 
1104
- #### getDefaultRoute
1105
- <a id="getDefaultRoute"></a>
1106
-
1107
- > **Warning**
1108
- > This method is deprecated and will be removed in the next Fastify
1109
- > major version.
1110
-
1111
- The `defaultRoute` handler handles requests that do not match any URL specified
1112
- by your Fastify application. This defaults to the 404 handler, but can be
1113
- overridden with [setDefaultRoute](#setdefaultroute). Method to get the
1114
- `defaultRoute` for the server:
1115
-
1116
- ```js
1117
- const defaultRoute = fastify.getDefaultRoute()
1118
- ```
1119
-
1120
- #### setDefaultRoute
1121
- <a id="setDefaultRoute"></a>
1122
-
1123
- > **Warning**
1124
- > This method is deprecated and will be removed in the next Fastify
1125
- > major version. Please, consider using `setNotFoundHandler` or a wildcard
1126
- > matching route.
1127
-
1128
- The default 404 handler, or one set using `setNotFoundHandler`, will
1129
- never trigger if the default route is overridden. This sets the handler for the
1130
- Fastify application, not just the current instance context. Use
1131
- [setNotFoundHandler](#setnotfoundhandler) if you want to customize 404 handling
1132
- instead.
1133
-
1134
- This method sets the `defaultRoute` for the server. Note that, its purpose is
1135
- to interact with the underlying raw requests. Unlike other Fastify handlers, the
1136
- arguments received are of type [RawRequest](./TypeScript.md#rawrequest) and
1137
- [RawReply](./TypeScript.md#rawreply) respectively.
1138
-
1139
- ```js
1140
- const defaultRoute = function (req, res) {
1141
- // req = RawRequest
1142
- // res = RawReply
1143
- res.end('hello world')
1144
- }
1145
-
1146
- fastify.setDefaultRoute(defaultRoute)
1147
- ```
1148
-
1149
1110
  #### routing
1150
1111
  <a id="routing"></a>
1151
1112
 
@@ -37,29 +37,26 @@ $ npm i @fastify/type-provider-json-schema-to-ts
37
37
  ```
38
38
 
39
39
  ```typescript
40
- import { JsonSchemaToTsProvider } from '@fastify/type-provider-json-schema-to-ts'
41
-
42
40
  import fastify from 'fastify'
41
+ import { JsonSchemaToTsProvider } from '@fastify/type-provider-json-schema-to-ts'
43
42
 
44
43
  const server = fastify().withTypeProvider<JsonSchemaToTsProvider>()
45
44
 
46
45
  server.get('/route', {
47
- schema: {
48
- querystring: {
49
- type: 'object',
50
- properties: {
51
- foo: { type: 'number' },
52
- bar: { type: 'string' },
53
- },
54
- required: ['foo', 'bar']
55
- }
46
+ schema: {
47
+ querystring: {
48
+ type: 'object',
49
+ properties: {
50
+ foo: { type: 'number' },
51
+ bar: { type: 'string' },
52
+ },
53
+ required: ['foo', 'bar']
56
54
  }
57
-
55
+ }
58
56
  }, (request, reply) => {
59
57
 
60
- // type Query = { foo: number, bar: string }
61
-
62
- const { foo, bar } = request.query // type safe!
58
+ // type Query = { foo: number, bar: string }
59
+ const { foo, bar } = request.query // type safe!
63
60
  })
64
61
  ```
65
62
 
@@ -72,25 +69,23 @@ $ npm i @fastify/type-provider-typebox
72
69
  ```
73
70
 
74
71
  ```typescript
72
+ import fastify from 'fastify'
75
73
  import { TypeBoxTypeProvider } from '@fastify/type-provider-typebox'
76
74
  import { Type } from '@sinclair/typebox'
77
75
 
78
- import fastify from 'fastify'
79
-
80
76
  const server = fastify().withTypeProvider<TypeBoxTypeProvider>()
81
77
 
82
78
  server.get('/route', {
83
- schema: {
84
- querystring: Type.Object({
85
- foo: Type.Number(),
86
- bar: Type.String()
87
- })
88
- }
79
+ schema: {
80
+ querystring: Type.Object({
81
+ foo: Type.Number(),
82
+ bar: Type.String()
83
+ })
84
+ }
89
85
  }, (request, reply) => {
90
86
 
91
- // type Query = { foo: number, bar: string }
92
-
93
- const { foo, bar } = request.query // type safe!
87
+ // type Query = { foo: number, bar: string }
88
+ const { foo, bar } = request.query // type safe!
94
89
  })
95
90
  ```
96
91
 
@@ -661,6 +661,23 @@ However, there are a couple of suggestions to help improve this experience:
661
661
  - Make sure the `no-unused-vars` rule is enabled in
662
662
  [ESLint](https://eslint.org/docs/rules/no-unused-vars) and any imported plugin
663
663
  are actually being loaded.
664
+ - In case you've the `@typescript-eslint/no-floating-promises` enabled,
665
+ please double-check that your ESLint configuration includes a `allowForKnownSafePromises`
666
+ property as described on the [`typescript-eslint no-floating-promises allowForKnownSafePromises
667
+ documentation`](https://typescript-eslint.io/rules/no-floating-promises/#allowforknownsafepromises):
668
+ ```
669
+ {
670
+ "rules": {
671
+ "@typescript-eslint/no-floating-promises": ["error", {
672
+ "allowForKnownSafePromises": [
673
+ { "from": "package", "name": "FastifyInstance", "package": "fastify" },
674
+ { "from": "package", "name": "FastifyReply", "package": "fastify" },
675
+ { "from": "package", "name": "SafePromiseLike", "package": "fastify" },
676
+ ]
677
+ }]
678
+ }
679
+ }
680
+ ```
664
681
  - Use a module such as [depcheck](https://www.npmjs.com/package/depcheck) or
665
682
  [npm-check](https://www.npmjs.com/package/npm-check) to verify plugin
666
683
  dependencies are being used somewhere in your project.
@@ -831,7 +848,7 @@ Constraints: `string | Buffer`
831
848
 
832
849
  #### Fastify
833
850
 
834
- ##### fastify<[RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric], [Logger][LoggerGeneric]>(opts?: [FastifyServerOptions][FastifyServerOptions]): [FastifyInstance][FastifyInstance]
851
+ ##### fastify< [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric], [Logger][LoggerGeneric]>(opts?: [FastifyServerOptions][FastifyServerOptions]): [FastifyInstance][FastifyInstance]
835
852
  [src](https://github.com/fastify/fastify/blob/main/fastify.d.ts#L19)
836
853
 
837
854
  The main Fastify API method. By default creates an HTTP server. Utilizing
@@ -986,7 +1003,7 @@ Type alias for `http.Server`
986
1003
 
987
1004
  ---
988
1005
 
989
- ##### fastify.FastifyServerOptions<[RawServer][RawServerGeneric], [Logger][LoggerGeneric]>
1006
+ ##### fastify.FastifyServerOptions< [RawServer][RawServerGeneric], [Logger][LoggerGeneric]>
990
1007
 
991
1008
  [src](https://github.com/fastify/fastify/blob/main/fastify.d.ts#L29)
992
1009
 
@@ -997,7 +1014,7 @@ generic parameters are passed down through that method.
997
1014
  See the main [fastify][Fastify] method type definition section for examples on
998
1015
  instantiating a Fastify server with TypeScript.
999
1016
 
1000
- ##### fastify.FastifyInstance<[RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RequestGeneric][FastifyRequestGenericInterface], [Logger][LoggerGeneric]>
1017
+ ##### fastify.FastifyInstance< [RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RequestGeneric][FastifyRequestGenericInterface], [Logger][LoggerGeneric]>
1001
1018
 
1002
1019
  [src](https://github.com/fastify/fastify/blob/main/types/instance.d.ts#L16)
1003
1020
 
@@ -1020,7 +1037,7 @@ details on this interface.
1020
1037
 
1021
1038
  #### Request
1022
1039
 
1023
- ##### fastify.FastifyRequest<[RequestGeneric][FastifyRequestGenericInterface], [RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric]>
1040
+ ##### fastify.FastifyRequest< [RequestGeneric][FastifyRequestGenericInterface], [RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric]>
1024
1041
  [src](https://github.com/fastify/fastify/blob/main/types/request.d.ts#L15)
1025
1042
 
1026
1043
  This interface contains properties of Fastify request object. The properties
@@ -1120,7 +1137,7 @@ RawRequestDefaultExpression<http2.Http2Server> // -> http2.Http2ServerRequest
1120
1137
 
1121
1138
  #### Reply
1122
1139
 
1123
- ##### fastify.FastifyReply<[RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric], [RequestGeneric][FastifyRequestGenericInterface], [ContextConfig][ContextConfigGeneric]>
1140
+ ##### fastify.FastifyReply< [RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric], [RequestGeneric][FastifyRequestGenericInterface], [ContextConfig][ContextConfigGeneric]>
1124
1141
  [src](https://github.com/fastify/fastify/blob/main/types/reply.d.ts#L32)
1125
1142
 
1126
1143
  This interface contains the custom properties that Fastify adds to the standard
@@ -1156,7 +1173,7 @@ declare module 'fastify' {
1156
1173
  }
1157
1174
  ```
1158
1175
 
1159
- ##### fastify.RawReplyDefaultExpression<[RawServer][RawServerGeneric]>
1176
+ ##### fastify.RawReplyDefaultExpression< [RawServer][RawServerGeneric]>
1160
1177
  [src](https://github.com/fastify/fastify/blob/main/types/utils.d.ts#L27)
1161
1178
 
1162
1179
  Dependent on `@types/node` modules `http`, `https`, `http2`
@@ -1188,19 +1205,19 @@ When creating plugins for Fastify, it is recommended to use the `fastify-plugin`
1188
1205
  module. Additionally, there is a guide to creating plugins with TypeScript and
1189
1206
  Fastify available in the Learn by Example, [Plugins](#plugins) section.
1190
1207
 
1191
- ##### fastify.FastifyPluginCallback<[Options][FastifyPluginOptions]>
1208
+ ##### fastify.FastifyPluginCallback< [Options][FastifyPluginOptions]>
1192
1209
  [src](https://github.com/fastify/fastify/blob/main/types/plugin.d.ts#L9)
1193
1210
 
1194
1211
  Interface method definition used within the
1195
1212
  [`fastify.register()`][FastifyRegister] method.
1196
1213
 
1197
- ##### fastify.FastifyPluginAsync<[Options][FastifyPluginOptions]>
1214
+ ##### fastify.FastifyPluginAsync< [Options][FastifyPluginOptions]>
1198
1215
  [src](https://github.com/fastify/fastify/blob/main/types/plugin.d.ts#L20)
1199
1216
 
1200
1217
  Interface method definition used within the
1201
1218
  [`fastify.register()`][FastifyRegister] method.
1202
1219
 
1203
- ##### fastify.FastifyPlugin<[Options][FastifyPluginOptions]>
1220
+ ##### fastify.FastifyPlugin< [Options][FastifyPluginOptions]>
1204
1221
  [src](https://github.com/fastify/fastify/blob/main/types/plugin.d.ts#L29)
1205
1222
 
1206
1223
  Interface method definition used within the
@@ -1269,7 +1286,7 @@ a function that returns the previously described intersection.
1269
1286
  Check out the [Specifying Logger Types](#example-5-specifying-logger-types)
1270
1287
  example for more details on specifying a custom logger.
1271
1288
 
1272
- ##### fastify.FastifyLoggerOptions<[RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric]>
1289
+ ##### fastify.FastifyLoggerOptions< [RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric]>
1273
1290
 
1274
1291
  [src](https://github.com/fastify/fastify/blob/main/types/logger.d.ts#L17)
1275
1292
 
@@ -1332,7 +1349,7 @@ One of the core principles in Fastify is its routing capabilities. Most of the
1332
1349
  types defined in this section are used under-the-hood by the Fastify instance
1333
1350
  `.route` and `.get/.post/.etc` methods.
1334
1351
 
1335
- ##### fastify.RouteHandlerMethod<[RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric], [RequestGeneric][FastifyRequestGenericInterface], [ContextConfig][ContextConfigGeneric]>
1352
+ ##### fastify.RouteHandlerMethod< [RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric], [RequestGeneric][FastifyRequestGenericInterface], [ContextConfig][ContextConfigGeneric]>
1336
1353
 
1337
1354
  [src](https://github.com/fastify/fastify/blob/main/types/route.d.ts#L105)
1338
1355
 
@@ -1342,7 +1359,7 @@ The generics parameters are passed through to these arguments. The method
1342
1359
  returns either `void` or `Promise<any>` for synchronous and asynchronous
1343
1360
  handlers respectively.
1344
1361
 
1345
- ##### fastify.RouteOptions<[RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric], [RequestGeneric][FastifyRequestGenericInterface], [ContextConfig][ContextConfigGeneric]>
1362
+ ##### fastify.RouteOptions< [RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric], [RequestGeneric][FastifyRequestGenericInterface], [ContextConfig][ContextConfigGeneric]>
1346
1363
 
1347
1364
  [src](https://github.com/fastify/fastify/blob/main/types/route.d.ts#L78)
1348
1365
 
@@ -1354,14 +1371,14 @@ required properties:
1354
1371
  3. `handler` the route handler method, see [RouteHandlerMethod][] for more
1355
1372
  details
1356
1373
 
1357
- ##### fastify.RouteShorthandMethod<[RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric]>
1374
+ ##### fastify.RouteShorthandMethod< [RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric]>
1358
1375
 
1359
1376
  [src](https://github.com/fastify/fastify/blob/main/types/route.d.ts#12)
1360
1377
 
1361
1378
  An overloaded function interface for three kinds of shorthand route methods to
1362
1379
  be used in conjunction with the `.get/.post/.etc` methods.
1363
1380
 
1364
- ##### fastify.RouteShorthandOptions<[RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric], [RequestGeneric][FastifyRequestGenericInterface], [ContextConfig][ContextConfigGeneric]>
1381
+ ##### fastify.RouteShorthandOptions< [RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric], [RequestGeneric][FastifyRequestGenericInterface], [ContextConfig][ContextConfigGeneric]>
1365
1382
 
1366
1383
  [src](https://github.com/fastify/fastify/blob/main/types/route.d.ts#55)
1367
1384
 
@@ -1369,7 +1386,7 @@ An interface that covers all of the base options for a route. Each property on
1369
1386
  this interface is optional, and it serves as the base for the RouteOptions and
1370
1387
  RouteShorthandOptionsWithHandler interfaces.
1371
1388
 
1372
- ##### fastify.RouteShorthandOptionsWithHandler<[RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric], [RequestGeneric][FastifyRequestGenericInterface], [ContextConfig][ContextConfigGeneric]>
1389
+ ##### fastify.RouteShorthandOptionsWithHandler< [RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric], [RequestGeneric][FastifyRequestGenericInterface], [ContextConfig][ContextConfigGeneric]>
1373
1390
 
1374
1391
  [src](https://github.com/fastify/fastify/blob/main/types/route.d.ts#93)
1375
1392
 
@@ -1384,21 +1401,21 @@ interface `handler` which is of type RouteHandlerMethod
1384
1401
 
1385
1402
  A generic type that is either a `string` or `Buffer`
1386
1403
 
1387
- ##### fastify.FastifyBodyParser<[RawBody][RawBodyGeneric], [RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric]>
1404
+ ##### fastify.FastifyBodyParser< [RawBody][RawBodyGeneric], [RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric]>
1388
1405
 
1389
1406
  [src](https://github.com/fastify/fastify/blob/main/types/content-type-parser.d.ts#L7)
1390
1407
 
1391
1408
  A function type definition for specifying a body parser method. Use the
1392
1409
  `RawBody` generic to specify the type of the body being parsed.
1393
1410
 
1394
- ##### fastify.FastifyContentTypeParser<[RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric]>
1411
+ ##### fastify.FastifyContentTypeParser< [RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric]>
1395
1412
 
1396
1413
  [src](https://github.com/fastify/fastify/blob/main/types/content-type-parser.d.ts#L17)
1397
1414
 
1398
1415
  A function type definition for specifying a body parser method. Content is typed
1399
1416
  via the `RawRequest` generic.
1400
1417
 
1401
- ##### fastify.AddContentTypeParser<[RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric]>
1418
+ ##### fastify.AddContentTypeParser< [RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric]>
1402
1419
 
1403
1420
  [src](https://github.com/fastify/fastify/blob/main/types/content-type-parser.d.ts#L46)
1404
1421
 
@@ -1440,7 +1457,7 @@ This interface is passed to instance of FastifyError.
1440
1457
 
1441
1458
  #### Hooks
1442
1459
 
1443
- ##### fastify.onRequestHookHandler<[RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric], [RequestGeneric][FastifyRequestGenericInterface], [ContextConfig][ContextConfigGeneric]>(request: [FastifyRequest][FastifyRequest], reply: [FastifyReply][FastifyReply], done: (err?: [FastifyError][FastifyError]) => void): Promise\<unknown\> | void
1460
+ ##### fastify.onRequestHookHandler< [RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric], [RequestGeneric][FastifyRequestGenericInterface], [ContextConfig][ContextConfigGeneric]>(request: [FastifyRequest][FastifyRequest], reply: [FastifyReply][FastifyReply], done: (err?: [FastifyError][FastifyError]) => void): Promise\<unknown\> | void
1444
1461
 
1445
1462
  [src](https://github.com/fastify/fastify/blob/main/types/hooks.d.ts#L17)
1446
1463
 
@@ -1450,7 +1467,7 @@ no previous hook, the next hook will be `preParsing`.
1450
1467
  Notice: in the `onRequest` hook, request.body will always be null, because the
1451
1468
  body parsing happens before the `preHandler` hook.
1452
1469
 
1453
- ##### fastify.preParsingHookHandler<[RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric], [RequestGeneric][FastifyRequestGenericInterface], [ContextConfig][ContextConfigGeneric]>(request: [FastifyRequest][FastifyRequest], reply: [FastifyReply][FastifyReply], done: (err?: [FastifyError][FastifyError]) => void): Promise\<unknown\> | void
1470
+ ##### fastify.preParsingHookHandler< [RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric], [RequestGeneric][FastifyRequestGenericInterface], [ContextConfig][ContextConfigGeneric]>(request: [FastifyRequest][FastifyRequest], reply: [FastifyReply][FastifyReply], done: (err?: [FastifyError][FastifyError]) => void): Promise\<unknown\> | void
1454
1471
 
1455
1472
  [src](https://github.com/fastify/fastify/blob/main/types/hooks.d.ts#L35)
1456
1473
 
@@ -1465,21 +1482,21 @@ stream. This property is used to correctly match the request payload with the
1465
1482
  `Content-Length` header value. Ideally, this property should be updated on each
1466
1483
  received chunk.
1467
1484
 
1468
- ##### fastify.preValidationHookHandler<[RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric], [RequestGeneric][FastifyRequestGenericInterface], [ContextConfig][ContextConfigGeneric]>(request: [FastifyRequest][FastifyRequest], reply: [FastifyReply][FastifyReply], done: (err?: [FastifyError][FastifyError]) => void): Promise\<unknown\> | void
1485
+ ##### fastify.preValidationHookHandler< [RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric], [RequestGeneric][FastifyRequestGenericInterface], [ContextConfig][ContextConfigGeneric]>(request: [FastifyRequest][FastifyRequest], reply: [FastifyReply][FastifyReply], done: (err?: [FastifyError][FastifyError]) => void): Promise\<unknown\> | void
1469
1486
 
1470
1487
  [src](https://github.com/fastify/fastify/blob/main/types/hooks.d.ts#L53)
1471
1488
 
1472
1489
  `preValidation` is the third hook to be executed in the request lifecycle. The
1473
1490
  previous hook was `preParsing`, the next hook will be `preHandler`.
1474
1491
 
1475
- ##### fastify.preHandlerHookHandler<[RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric], [RequestGeneric][FastifyRequestGenericInterface], [ContextConfig][ContextConfigGeneric]>(request: [FastifyRequest][FastifyRequest], reply: [FastifyReply][FastifyReply], done: (err?: [FastifyError][FastifyError]) => void): Promise\<unknown\> | void
1492
+ ##### fastify.preHandlerHookHandler< [RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric], [RequestGeneric][FastifyRequestGenericInterface], [ContextConfig][ContextConfigGeneric]>(request: [FastifyRequest][FastifyRequest], reply: [FastifyReply][FastifyReply], done: (err?: [FastifyError][FastifyError]) => void): Promise\<unknown\> | void
1476
1493
 
1477
1494
  [src](https://github.com/fastify/fastify/blob/main/types/hooks.d.ts#L70)
1478
1495
 
1479
1496
  `preHandler` is the fourth hook to be executed in the request lifecycle. The
1480
1497
  previous hook was `preValidation`, the next hook will be `preSerialization`.
1481
1498
 
1482
- ##### fastify.preSerializationHookHandler<PreSerializationPayload, [RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric], [RequestGeneric][FastifyRequestGenericInterface], [ContextConfig][ContextConfigGeneric]>(request: [FastifyRequest][FastifyRequest], reply: [FastifyReply][FastifyReply], payload: PreSerializationPayload, done: (err: [FastifyError][FastifyError] | null, res?: unknown) => void): Promise\<unknown\> | void
1499
+ ##### fastify.preSerializationHookHandler< PreSerializationPayload, [RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric], [RequestGeneric][FastifyRequestGenericInterface], [ContextConfig][ContextConfigGeneric]>(request: [FastifyRequest][FastifyRequest], reply: [FastifyReply][FastifyReply], payload: PreSerializationPayload, done: (err: [FastifyError][FastifyError] | null, res?: unknown) => void): Promise\<unknown\> | void
1483
1500
 
1484
1501
  [src](https://github.com/fastify/fastify/blob/main/types/hooks.d.ts#L94)
1485
1502
 
@@ -1489,7 +1506,7 @@ The previous hook was `preHandler`, the next hook will be `onSend`.
1489
1506
  Note: the hook is NOT called if the payload is a string, a Buffer, a stream or
1490
1507
  null.
1491
1508
 
1492
- ##### fastify.onSendHookHandler<OnSendPayload, [RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric], [RequestGeneric][FastifyRequestGenericInterface], [ContextConfig][ContextConfigGeneric]>(request: [FastifyRequest][FastifyRequest], reply: [FastifyReply][FastifyReply], payload: OnSendPayload, done: (err: [FastifyError][FastifyError] | null, res?: unknown) => void): Promise\<unknown\> | void
1509
+ ##### fastify.onSendHookHandler< OnSendPayload, [RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric], [RequestGeneric][FastifyRequestGenericInterface], [ContextConfig][ContextConfigGeneric]>(request: [FastifyRequest][FastifyRequest], reply: [FastifyReply][FastifyReply], payload: OnSendPayload, done: (err: [FastifyError][FastifyError] | null, res?: unknown) => void): Promise\<unknown\> | void
1493
1510
 
1494
1511
  [src](https://github.com/fastify/fastify/blob/main/types/hooks.d.ts#L114)
1495
1512
 
@@ -1500,7 +1517,7 @@ next hook will be `onResponse`.
1500
1517
  Note: If you change the payload, you may only change it to a string, a Buffer, a
1501
1518
  stream, or null.
1502
1519
 
1503
- ##### fastify.onResponseHookHandler<[RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric], [RequestGeneric][FastifyRequestGenericInterface], [ContextConfig][ContextConfigGeneric]>(request: [FastifyRequest][FastifyRequest], reply: [FastifyReply][FastifyReply], done: (err?: [FastifyError][FastifyError]) => void): Promise\<unknown\> | void
1520
+ ##### fastify.onResponseHookHandler< [RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric], [RequestGeneric][FastifyRequestGenericInterface], [ContextConfig][ContextConfigGeneric]>(request: [FastifyRequest][FastifyRequest], reply: [FastifyReply][FastifyReply], done: (err?: [FastifyError][FastifyError]) => void): Promise\<unknown\> | void
1504
1521
 
1505
1522
  [src](https://github.com/fastify/fastify/blob/main/types/hooks.d.ts#L134)
1506
1523
 
@@ -1511,7 +1528,7 @@ The onResponse hook is executed when a response has been sent, so you will not
1511
1528
  be able to send more data to the client. It can however be useful for sending
1512
1529
  data to external services, for example to gather statistics.
1513
1530
 
1514
- ##### fastify.onErrorHookHandler<[RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric], [RequestGeneric][FastifyRequestGenericInterface], [ContextConfig][ContextConfigGeneric]>(request: [FastifyRequest][FastifyRequest], reply: [FastifyReply][FastifyReply], error: [FastifyError][FastifyError], done: () => void): Promise\<unknown\> | void
1531
+ ##### fastify.onErrorHookHandler< [RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric], [RequestGeneric][FastifyRequestGenericInterface], [ContextConfig][ContextConfigGeneric]>(request: [FastifyRequest][FastifyRequest], reply: [FastifyReply][FastifyReply], error: [FastifyError][FastifyError], done: () => void): Promise\<unknown\> | void
1515
1532
 
1516
1533
  [src](https://github.com/fastify/fastify/blob/main/types/hooks.d.ts#L154)
1517
1534
 
@@ -1528,7 +1545,7 @@ the default customErrorHandler always sends the error back to the user).
1528
1545
  Notice: unlike the other hooks, pass an error to the done function is not
1529
1546
  supported.
1530
1547
 
1531
- ##### fastify.onRouteHookHandler<[RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric], [RequestGeneric][FastifyRequestGenericInterface], [ContextConfig][ContextConfigGeneric]>(opts: [RouteOptions][RouteOptions] & { path: string; prefix: string }): Promise\<unknown\> | void
1548
+ ##### fastify.onRouteHookHandler< [RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric], [RequestGeneric][FastifyRequestGenericInterface], [ContextConfig][ContextConfigGeneric]>(opts: [RouteOptions][RouteOptions] & \{ path: string; prefix: string }): Promise\<unknown\> | void
1532
1549
 
1533
1550
  [src](https://github.com/fastify/fastify/blob/main/types/hooks.d.ts#L174)
1534
1551
 
@@ -1536,7 +1553,7 @@ Triggered when a new route is registered. Listeners are passed a routeOptions
1536
1553
  object as the sole parameter. The interface is synchronous, and, as such, the
1537
1554
  listener does not get passed a callback
1538
1555
 
1539
- ##### fastify.onRegisterHookHandler<[RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric], [Logger][LoggerGeneric]>(instance: [FastifyInstance][FastifyInstance], done: (err?: [FastifyError][FastifyError]) => void): Promise\<unknown\> | void
1556
+ ##### fastify.onRegisterHookHandler< [RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric], [Logger][LoggerGeneric]>(instance: [FastifyInstance][FastifyInstance], done: (err?: [FastifyError][FastifyError]) => void): Promise\<unknown\> | void
1540
1557
 
1541
1558
  [src](https://github.com/fastify/fastify/blob/main/types/hooks.d.ts#L191)
1542
1559
 
@@ -1548,7 +1565,7 @@ plugin context is formed, and you want to operate in that specific context.
1548
1565
 
1549
1566
  Note: This hook will not be called if a plugin is wrapped inside fastify-plugin.
1550
1567
 
1551
- ##### fastify.onCloseHookHandler<[RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric], [Logger][LoggerGeneric]>(instance: [FastifyInstance][FastifyInstance], done: (err?: [FastifyError][FastifyError]) => void): Promise\<unknown\> | void
1568
+ ##### fastify.onCloseHookHandler< [RawServer][RawServerGeneric], [RawRequest][RawRequestGeneric], [RawReply][RawReplyGeneric], [Logger][LoggerGeneric]>(instance: [FastifyInstance][FastifyInstance], done: (err?: [FastifyError][FastifyError]) => void): Promise\<unknown\> | void
1552
1569
 
1553
1570
  [src](https://github.com/fastify/fastify/blob/main/types/hooks.d.ts#L206)
1554
1571