fastify 4.26.2 → 4.28.0

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 (432) hide show
  1. package/.tap/processinfo/029eb7a1-1942-40bc-98e2-cef3b7a14b5e.json +268 -0
  2. package/.tap/processinfo/03c196c6-01c3-4268-a9b5-298dff18a873.json +269 -0
  3. package/.tap/processinfo/04bbabba-8611-4908-9092-dfa9fcc13327.json +268 -0
  4. package/.tap/processinfo/05d8a743-3edf-4e2d-ae5a-dc99d0855ba5.json +272 -0
  5. package/.tap/processinfo/07718963-36a8-4d87-82ad-366c877a5247.json +268 -0
  6. package/.tap/processinfo/08fe3bde-5814-4308-9158-cdf1e47391b7.json +268 -0
  7. package/.tap/processinfo/0a3e3fb0-eabf-4532-ae80-20434da22678.json +268 -0
  8. package/.tap/processinfo/0caf2a75-4b3a-46c4-9b41-c7e450e5e15f.json +268 -0
  9. package/.tap/processinfo/0cf35d52-e5b2-4884-bcf0-b0ab3017b689.json +268 -0
  10. package/.tap/processinfo/0e666134-5013-4ecd-9ee6-59b22716c39c.json +268 -0
  11. package/.tap/processinfo/1087b811-4ec4-4f91-92b4-a78a51a437de.json +268 -0
  12. package/.tap/processinfo/13709ed3-b68c-42cf-8472-b0c4b8a89d2b.json +268 -0
  13. package/.tap/processinfo/13ac2f18-d0e0-439f-bc86-2ff0119af857.json +268 -0
  14. package/.tap/processinfo/13e47e0e-f6e8-4381-8a42-923b661f4a4f.json +268 -0
  15. package/.tap/processinfo/143f7d43-b8e8-4666-b482-f28fb37160ee.json +268 -0
  16. package/.tap/processinfo/14f3801d-03ab-4db3-9df5-c5d47e0a8cf0.json +270 -0
  17. package/.tap/processinfo/15a07dad-4bcd-442c-95e0-30c31f2b9818.json +273 -0
  18. package/.tap/processinfo/191ad3ad-04d8-4fb9-b119-ad2811f9b925.json +243 -0
  19. package/.tap/processinfo/1b25d54b-62d3-44cd-b581-31e705522fae.json +268 -0
  20. package/.tap/processinfo/1b7cb260-f04b-4135-a4fe-093081c4706f.json +268 -0
  21. package/.tap/processinfo/1e395d63-4815-4c77-aa47-df3709cc0ef9.json +268 -0
  22. package/.tap/processinfo/1e7f6a54-3abf-4771-863a-585cba110aec.json +268 -0
  23. package/.tap/processinfo/21a15e1d-0b41-47d8-b03d-0ba130969034.json +244 -0
  24. package/.tap/processinfo/21e02016-9ecd-4983-8417-9c74d224644f.json +269 -0
  25. package/.tap/processinfo/2327d941-d0d5-4762-b386-02a9a27ad28e.json +268 -0
  26. package/.tap/processinfo/23d39204-eac9-4f57-8db4-ffa996227fbd.json +268 -0
  27. package/.tap/processinfo/2493875a-0ac6-4d53-993c-f44471fd0678.json +268 -0
  28. package/.tap/processinfo/2698669f-f1e7-4a12-a687-8d58177be2b0.json +269 -0
  29. package/.tap/processinfo/2862b053-0a3d-46d7-9381-ffcb06287609.json +268 -0
  30. package/.tap/processinfo/2ac1b8d6-ac92-40e2-a59a-7681069f487c.json +268 -0
  31. package/.tap/processinfo/2c75e5f7-c4ef-47e4-a1c4-105eef6c0fab.json +242 -0
  32. package/.tap/processinfo/2e2c45cd-718b-4e5a-bf88-f801630f2803.json +268 -0
  33. package/.tap/processinfo/2f9ca478-3e03-4cce-a0bc-fcdc86d7c316.json +268 -0
  34. package/.tap/processinfo/30e3117f-fb74-456f-8f02-527e9eb9fcc3.json +268 -0
  35. package/.tap/processinfo/332be679-63c7-4b49-8b87-ef55995ada2d.json +268 -0
  36. package/.tap/processinfo/37c36f95-07f9-4ef0-8ab4-9e107d51b605.json +269 -0
  37. package/.tap/processinfo/3874eae2-f3db-44ef-9a9f-c8169d4b2b76.json +268 -0
  38. package/.tap/processinfo/38a7c3da-a411-41d0-8993-9deefd23500d.json +268 -0
  39. package/.tap/processinfo/3a7b6dbd-e153-4ce5-b557-21fb82009983.json +269 -0
  40. package/.tap/processinfo/3c6731ec-936d-470f-b7b0-0c87b54be051.json +268 -0
  41. package/.tap/processinfo/3c850ea9-4ef0-4044-a3fd-fbadfa9d543e.json +268 -0
  42. package/.tap/processinfo/3e4e15e0-a325-46f0-be57-5fd374560b7a.json +269 -0
  43. package/.tap/processinfo/3ed868e0-887c-402a-9f22-b1fdb74b4da0.json +268 -0
  44. package/.tap/processinfo/405498d7-5854-4ce1-a7dc-06920932f26d.json +268 -0
  45. package/.tap/processinfo/40b7eb19-ae35-4490-8a11-eb91a573c590.json +268 -0
  46. package/.tap/processinfo/40bb1260-d856-4248-8939-a0a05e322041.json +268 -0
  47. package/.tap/processinfo/41252e0b-7f69-44cc-b356-dd94bcbfdb29.json +268 -0
  48. package/.tap/processinfo/418fa710-e2fd-4508-b533-c179958da464.json +269 -0
  49. package/.tap/processinfo/433ef009-63aa-48fe-8e5d-c725228fa2fc.json +268 -0
  50. package/.tap/processinfo/44bf577c-9c01-4197-bd29-2e1ae888c4d4.json +268 -0
  51. package/.tap/processinfo/458fb7f2-20b9-48a2-8853-403c9851f605.json +268 -0
  52. package/.tap/processinfo/46b9892b-bb23-4b86-b0fa-9297f08c611a.json +268 -0
  53. package/.tap/processinfo/46bd9aaf-6cf3-4bd5-b90d-e136a7299a8e.json +268 -0
  54. package/.tap/processinfo/4779aa5f-e57a-4fcc-87e2-7d0bd4fca27f.json +268 -0
  55. package/.tap/processinfo/47b73f4b-ab31-49e1-97fd-8436dbe4bdf3.json +269 -0
  56. package/.tap/processinfo/49dba52e-e0c9-445d-8e9d-6d9ebe3ce6c4.json +268 -0
  57. package/.tap/processinfo/4b1dbc61-4e65-4c56-9784-2036f369038a.json +268 -0
  58. package/.tap/processinfo/4b6f0b40-43ef-4668-83a0-e07e28509df5.json +268 -0
  59. package/.tap/processinfo/4c236f70-f532-460b-8f7a-dd973301d493.json +268 -0
  60. package/.tap/processinfo/4d92b707-a268-48b8-885b-004d3a288c41.json +269 -0
  61. package/.tap/processinfo/4ff10bae-7c97-4c0a-b712-6c0d2f8c0e8e.json +270 -0
  62. package/.tap/processinfo/50f95bd5-ae12-4d83-99f4-ae9b0690c6a8.json +268 -0
  63. package/.tap/processinfo/557e4a49-d99c-4a63-b2f2-f33d897ab874.json +268 -0
  64. package/.tap/processinfo/589fd21a-8319-4abf-8cf7-82cb4a463a4b.json +269 -0
  65. package/.tap/processinfo/5a872f3a-949f-40be-8004-d739d034255c.json +272 -0
  66. package/.tap/processinfo/5abc301a-23da-424d-891e-3afbaff9156c.json +269 -0
  67. package/.tap/processinfo/5c31614c-a766-4837-ab59-dd6977166f72.json +253 -0
  68. package/.tap/processinfo/5d1e90c8-d819-4901-b022-f9ea4cd81978.json +268 -0
  69. package/.tap/processinfo/5d283e67-f31d-4fa8-a559-a1d8e82ee046.json +269 -0
  70. package/.tap/processinfo/5df505bc-6a4b-4c41-822f-51e2d7111de8.json +268 -0
  71. package/.tap/processinfo/5eaf64a2-fbfd-40e7-b391-c30f744b2bf1.json +269 -0
  72. package/.tap/processinfo/5ef5ede0-6436-4938-8401-d32ad4bffd5d.json +268 -0
  73. package/.tap/processinfo/606f05c0-8293-41db-bc92-eea82123697f.json +269 -0
  74. package/.tap/processinfo/6446806d-6cab-4c1d-a9ed-6bccaf3c4ea9.json +268 -0
  75. package/.tap/processinfo/64da7e08-925d-444d-98de-6568c6115d8d.json +269 -0
  76. package/.tap/processinfo/6917da6d-d2dc-466a-a893-7fb7412dde96.json +268 -0
  77. package/.tap/processinfo/69bbeee0-c398-4ccf-98b3-fb625a63bab4.json +268 -0
  78. package/.tap/processinfo/6da6ea8f-3370-4703-b230-90159531f766.json +268 -0
  79. package/.tap/processinfo/6ecffe1f-3016-4c11-9294-b488baced99f.json +268 -0
  80. package/.tap/processinfo/6f23f41f-ccbd-48cb-9ab6-311db0cfb65c.json +270 -0
  81. package/.tap/processinfo/70168912-9bb2-4334-bb89-041f1764cddf.json +268 -0
  82. package/.tap/processinfo/713a674e-40e1-46b4-866e-949d57c1a9f9.json +270 -0
  83. package/.tap/processinfo/730254d4-eacb-4cdf-80f4-8da22341cde5.json +268 -0
  84. package/.tap/processinfo/7344e559-c546-416f-8f1b-0f9fe12c6f02.json +268 -0
  85. package/.tap/processinfo/7556217a-0155-448f-b4d4-bec1bb0f6040.json +269 -0
  86. package/.tap/processinfo/7572079c-166c-4c4c-85ff-89b9430b214f.json +268 -0
  87. package/.tap/processinfo/7808180f-1974-47cd-bba2-2d6b8b711d65.json +273 -0
  88. package/.tap/processinfo/796dde83-da66-4db2-8d27-d45a3627c9c7.json +268 -0
  89. package/.tap/processinfo/7979819f-3723-48be-9f55-be700e689441.json +270 -0
  90. package/.tap/processinfo/7a664d39-d7f5-42f9-89df-15563048fab6.json +268 -0
  91. package/.tap/processinfo/7b047b72-01d9-4217-857c-93341651b4b3.json +269 -0
  92. package/.tap/processinfo/7ce41af6-7961-45ae-8c6f-b6e1c5692a48.json +268 -0
  93. package/.tap/processinfo/7e1de1c6-127e-463d-9357-081ee33ef5ce.json +269 -0
  94. package/.tap/processinfo/81ac7a7f-b0c0-4ef6-82cb-c718ea84e152.json +268 -0
  95. package/.tap/processinfo/851a058f-a497-4b10-a0b7-c9182d9c4d5a.json +268 -0
  96. package/.tap/processinfo/86502974-c245-4194-ade4-d9c6fdbb757e.json +268 -0
  97. package/.tap/processinfo/86b9786f-4a98-43b8-882a-5f936b876f08.json +241 -0
  98. package/.tap/processinfo/8a3fe726-86ab-4300-8d73-7eacbbc02a05.json +268 -0
  99. package/.tap/processinfo/8adf928b-c963-4ba0-9c35-606fcbd8a2aa.json +272 -0
  100. package/.tap/processinfo/8b31a6d8-1a33-4a27-93ca-1c5b364be068.json +240 -0
  101. package/.tap/processinfo/8ec12773-6b18-49a2-8e52-874c797df965.json +833 -0
  102. package/.tap/processinfo/8edb9502-3420-42fb-a602-e5de93be2df1.json +268 -0
  103. package/.tap/processinfo/8fc572e6-9828-4f98-a49c-9e081b2193c4.json +242 -0
  104. package/.tap/processinfo/8fee2d30-c5dd-4fae-9cf2-2ef8dd0f90de.json +834 -0
  105. package/.tap/processinfo/92cc0496-5f26-4370-8212-18136b972f99.json +268 -0
  106. package/.tap/processinfo/93a3f064-3f6e-4f49-becb-f7925f2961a9.json +268 -0
  107. package/.tap/processinfo/967e3697-8310-4a19-8dd5-927ac8bd6c79.json +269 -0
  108. package/.tap/processinfo/97225e23-9d30-4287-b3f5-72bccebec50b.json +268 -0
  109. package/.tap/processinfo/9a363bc6-4e65-47e8-94ca-26a9db428fb4.json +268 -0
  110. package/.tap/processinfo/9d2fe462-57fa-43f1-b02c-d188f15de30b.json +270 -0
  111. package/.tap/processinfo/a00b6cda-feb7-4b8a-8179-4c43bc29d670.json +269 -0
  112. package/.tap/processinfo/a017cbd5-4ac7-49e1-8c77-1bf4f6e7f2a6.json +271 -0
  113. package/.tap/processinfo/a1277309-1984-48f8-b60b-f5e8639736be.json +271 -0
  114. package/.tap/processinfo/a16bf53e-4337-48ff-88fa-67f55738e0f5.json +268 -0
  115. package/.tap/processinfo/a3a9848f-440e-41bb-9b0b-568bcfee0ddc.json +268 -0
  116. package/.tap/processinfo/a468c11f-f2f1-4e92-9ba0-6d28b6569b72.json +268 -0
  117. package/.tap/processinfo/a5880465-68f1-46b3-84a5-0da389d0bc67.json +268 -0
  118. package/.tap/processinfo/a666f394-39b4-44ad-8e74-abebf74dde3b.json +270 -0
  119. package/.tap/processinfo/af09d8ca-7053-4410-b514-b22c47f5979f.json +268 -0
  120. package/.tap/processinfo/af203309-28aa-459d-a56e-d88833695521.json +268 -0
  121. package/.tap/processinfo/afa2f7b6-dcd2-4d90-bf3c-54ba8b6800eb.json +268 -0
  122. package/.tap/processinfo/b231291d-ef14-4ff0-85f9-38a73a5408f8.json +268 -0
  123. package/.tap/processinfo/b3d3f2a1-a9fc-4d88-b122-fae90248cd59.json +268 -0
  124. package/.tap/processinfo/b834bf83-26c4-403a-8e91-eb15fe4b0b5d.json +268 -0
  125. package/.tap/processinfo/b8786fd7-47df-4ac1-8d6f-2d4c7623c681.json +268 -0
  126. package/.tap/processinfo/b9758f53-7f5a-4b03-8684-8a42ad644e5a.json +268 -0
  127. package/.tap/processinfo/bd194ea2-a21a-4604-b225-ee48abf1e607.json +242 -0
  128. package/.tap/processinfo/bd7ced53-3872-43b7-ad73-3352e50b728b.json +268 -0
  129. package/.tap/processinfo/be50295b-7e50-46cd-8bf1-637bf222699c.json +268 -0
  130. package/.tap/processinfo/bec61dd9-aa52-4e6c-8e37-5c9c10e935fd.json +268 -0
  131. package/.tap/processinfo/c015adf9-1d60-447e-87b5-b2031fe55bba.json +268 -0
  132. package/.tap/processinfo/c0666afa-7f64-45bd-97fb-145df1380157.json +268 -0
  133. package/.tap/processinfo/c2c0c012-c1c0-4457-84d6-dadba8396c94.json +268 -0
  134. package/.tap/processinfo/c3dd3ecd-737b-47ce-a917-54341c7bbed3.json +268 -0
  135. package/.tap/processinfo/c41ac06d-64b8-4bb3-bf56-0551f5a48f4b.json +268 -0
  136. package/.tap/processinfo/c4235bfb-a2aa-4271-9c6b-3ceb370219b1.json +268 -0
  137. package/.tap/processinfo/c4e6f24f-288c-493c-b6f0-02924aeb6758.json +270 -0
  138. package/.tap/processinfo/c54227bb-4a7b-40bb-bfe6-b54fe55078f3.json +268 -0
  139. package/.tap/processinfo/c699de91-3b0b-4466-9418-6910a3eb640a.json +269 -0
  140. package/.tap/processinfo/c74e2f37-451a-4577-ac18-e597fbd9a1d4.json +269 -0
  141. package/.tap/processinfo/c90cccec-5b4b-445f-a935-ac22859675d0.json +252 -0
  142. package/.tap/processinfo/c9dd6c7d-0d16-45e5-87ae-117388bf2994.json +268 -0
  143. package/.tap/processinfo/ca2e48fb-58c5-47fc-ad2e-263838aea42c.json +272 -0
  144. package/.tap/processinfo/ca87351d-c710-45c1-838a-16bccac59874.json +273 -0
  145. package/.tap/processinfo/cdb4a671-5776-4944-91b9-c456c58841ef.json +268 -0
  146. package/.tap/processinfo/cf10fdc8-6a87-447a-9e12-45f447af61f3.json +244 -0
  147. package/.tap/processinfo/cf3f1f08-643e-4f24-82ca-40f7a349c3d1.json +268 -0
  148. package/.tap/processinfo/d091172a-06a5-469b-82a9-8fefe3dd99da.json +240 -0
  149. package/.tap/processinfo/d1675431-61d6-45f8-a010-6e654112a00a.json +272 -0
  150. package/.tap/processinfo/d2d54aa2-c221-4ad4-b6b7-0c58e3c3679c.json +269 -0
  151. package/.tap/processinfo/d4f3c95a-ddbe-419d-bce0-dd6acceee21f.json +268 -0
  152. package/.tap/processinfo/d54ed8f1-43c3-478a-90d3-2c8aced723f2.json +269 -0
  153. package/.tap/processinfo/d6e5a2a6-4647-4d98-916c-aec4ace54a65.json +268 -0
  154. package/.tap/processinfo/d7280c64-45e6-4b12-affc-3ac9a5d4014a.json +268 -0
  155. package/.tap/processinfo/d82c8367-d825-4405-88df-07298f6ef840.json +269 -0
  156. package/.tap/processinfo/d8f97e53-e921-4d33-9c8d-2f7e807a9425.json +268 -0
  157. package/.tap/processinfo/da546a73-9714-4f8c-bdbb-e42730edbcfa.json +268 -0
  158. package/.tap/processinfo/da7fb7fb-1da4-49f8-a3ee-d4ea623c01a5.json +268 -0
  159. package/.tap/processinfo/daa6a016-4f0c-4050-923c-2022e0bb21d8.json +268 -0
  160. package/.tap/processinfo/db9a251d-8540-4719-b464-e7d5febd97d1.json +240 -0
  161. package/.tap/processinfo/dc10c603-8e58-4611-baa3-44da2578d07a.json +268 -0
  162. package/.tap/processinfo/dde56c1a-858c-47cc-b0bb-61279620ac17.json +268 -0
  163. package/.tap/processinfo/e0d9c4ea-f7c7-4c64-8ced-66dc6f0ac5d2.json +271 -0
  164. package/.tap/processinfo/e121454f-5dfa-4209-ba15-4c39840871f2.json +831 -0
  165. package/.tap/processinfo/e1f43e40-c3fe-4eb8-a713-d5910cc6b25a.json +268 -0
  166. package/.tap/processinfo/e4575e7a-f00e-488b-94e1-8f877b54725e.json +268 -0
  167. package/.tap/processinfo/e9ad667e-8603-4488-af64-449cc9532803.json +268 -0
  168. package/.tap/processinfo/eb26a697-e5e2-4730-aeea-bcb9c49afd4d.json +268 -0
  169. package/.tap/processinfo/eb29d1c3-feaf-4744-9d84-cf257e8269b0.json +268 -0
  170. package/.tap/processinfo/ee720c0a-ed64-4e7e-8c0a-139c7b9725d2.json +268 -0
  171. package/.tap/processinfo/ef88c13a-87b2-49e4-a683-7b812505cd6f.json +268 -0
  172. package/.tap/processinfo/f4ed6948-dac0-4128-9f86-d083b6918ea7.json +268 -0
  173. package/.tap/processinfo/f7544c01-8ac7-4e42-8ad5-c4d62e094d1f.json +270 -0
  174. package/.tap/processinfo/f7cee4b3-7bcc-4591-a628-5629b0b41c9e.json +268 -0
  175. package/.tap/processinfo/f9c0a1f7-c1a4-44d3-ae3f-8c1eb42cd746.json +269 -0
  176. package/.tap/processinfo/fc46b4da-79db-4201-af7e-34bb17f92d69.json +270 -0
  177. package/.tap/processinfo/fccc0056-03c4-40cb-9d0b-2db4bbe573c1.json +268 -0
  178. package/.tap/processinfo/fd2df572-54d7-4ce7-b7aa-a2b4b00d4127.json +254 -0
  179. package/.tap/processinfo/fea9377f-b473-484d-bee6-ac7f49e50937.json +269 -0
  180. package/.tap/processinfo/feb516dc-abda-46e6-9b42-d37adfc63366.json +268 -0
  181. package/.tap/processinfo/ff0fda4c-aa2e-4236-906e-fdfb6bd6632e.json +269 -0
  182. package/.tap/test-results/test/404s.test.js.tap +623 -0
  183. package/.tap/test-results/test/500s.test.js.tap +64 -0
  184. package/.tap/test-results/test/allowUnsafeRegex.test.js.tap +36 -0
  185. package/.tap/test-results/test/als.test.js.tap +15 -0
  186. package/.tap/test-results/test/async-await.test.js.tap +184 -0
  187. package/.tap/test-results/test/async-dispose.test.js.tap +8 -0
  188. package/.tap/test-results/test/async_hooks.test.js.tap +10 -0
  189. package/.tap/test-results/test/bodyLimit.test.js.tap +48 -0
  190. package/.tap/test-results/test/buffer.test.js.tap +20 -0
  191. package/.tap/test-results/test/build/error-serializer.test.js.tap +8 -0
  192. package/.tap/test-results/test/build/version.test.js.tap +7 -0
  193. package/.tap/test-results/test/case-insensitive.test.js.tap +36 -0
  194. package/.tap/test-results/test/chainable.test.js.tap +17 -0
  195. package/.tap/test-results/test/check.test.js.tap +10 -0
  196. package/.tap/test-results/test/childLoggerFactory.test.js.tap +23 -0
  197. package/.tap/test-results/test/client-timeout.test.js.tap +7 -0
  198. package/.tap/test-results/test/close-pipelining.test.js.tap +15 -0
  199. package/.tap/test-results/test/close.test.js.tap +172 -0
  200. package/.tap/test-results/test/connectionTimeout.test.js.tap +12 -0
  201. package/.tap/test-results/test/constrained-routes.test.js.tap +173 -0
  202. package/.tap/test-results/test/content-length.test.js.tap +46 -0
  203. package/.tap/test-results/test/content-parser.test.js.tap +266 -0
  204. package/.tap/test-results/test/content-type.test.js.tap +14 -0
  205. package/.tap/test-results/test/context-config.test.js.tap +41 -0
  206. package/.tap/test-results/test/copy.test.js.tap +14 -0
  207. package/.tap/test-results/test/custom-http-server.test.js.tap +30 -0
  208. package/.tap/test-results/test/custom-parser-async.test.js.tap +21 -0
  209. package/.tap/test-results/test/custom-parser.0.test.js.tap +199 -0
  210. package/.tap/test-results/test/custom-parser.1.test.js.tap +90 -0
  211. package/.tap/test-results/test/custom-parser.2.test.js.tap +22 -0
  212. package/.tap/test-results/test/custom-parser.3.test.js.tap +53 -0
  213. package/.tap/test-results/test/custom-parser.4.test.js.tap +45 -0
  214. package/.tap/test-results/test/custom-parser.5.test.js.tap +41 -0
  215. package/.tap/test-results/test/custom-querystring-parser.test.js.tap +46 -0
  216. package/.tap/test-results/test/decorator.test.js.tap +465 -0
  217. package/.tap/test-results/test/delete.test.js.tap +110 -0
  218. package/.tap/test-results/test/diagnostics-channel/404.test.js.tap +15 -0
  219. package/.tap/test-results/test/diagnostics-channel/async-delay-request.test.js.tap +25 -0
  220. package/.tap/test-results/test/diagnostics-channel/async-request.test.js.tap +24 -0
  221. package/.tap/test-results/test/diagnostics-channel/error-before-handler.test.js.tap +9 -0
  222. package/.tap/test-results/test/diagnostics-channel/error-request.test.js.tap +20 -0
  223. package/.tap/test-results/test/diagnostics-channel/error-status.test.js.tap +10 -0
  224. package/.tap/test-results/test/diagnostics-channel/init.test.js.tap +14 -0
  225. package/.tap/test-results/test/diagnostics-channel/sync-delay-request.test.js.tap +16 -0
  226. package/.tap/test-results/test/diagnostics-channel/sync-request-reply.test.js.tap +16 -0
  227. package/.tap/test-results/test/diagnostics-channel/sync-request.test.js.tap +19 -0
  228. package/.tap/test-results/test/encapsulated-child-logger-factory.test.js.tap +18 -0
  229. package/.tap/test-results/test/encapsulated-error-handler.test.js.tap +243 -0
  230. package/.tap/test-results/test/esm/errorCodes.test.mjs.tap +9 -0
  231. package/.tap/test-results/test/esm/esm.test.mjs.tap +8 -0
  232. package/.tap/test-results/test/esm/index.test.js.tap +8 -0
  233. package/.tap/test-results/test/fastify-instance.test.js.tap +114 -0
  234. package/.tap/test-results/test/findRoute.test.js.tap +37 -0
  235. package/.tap/test-results/test/fluent-schema.test.js.tap +36 -0
  236. package/.tap/test-results/test/genReqId.test.js.tap +106 -0
  237. package/.tap/test-results/test/get.test.js.tap +151 -0
  238. package/.tap/test-results/test/handler-context.test.js.tap +19 -0
  239. package/.tap/test-results/test/has-route.test.js.tap +30 -0
  240. package/.tap/test-results/test/head.test.js.tap +130 -0
  241. package/.tap/test-results/test/header-overflow.test.js.tap +16 -0
  242. package/.tap/test-results/test/hooks-async.test.js.tap +286 -0
  243. package/.tap/test-results/test/hooks.on-listen.test.js.tap +311 -0
  244. package/.tap/test-results/test/hooks.on-ready.test.js.tap +151 -0
  245. package/.tap/test-results/test/hooks.test.js.tap +966 -0
  246. package/.tap/test-results/test/http2/closing.test.js.tap +35 -0
  247. package/.tap/test-results/test/http2/constraint.test.js.tap +32 -0
  248. package/.tap/test-results/test/http2/head.test.js.tap +9 -0
  249. package/.tap/test-results/test/http2/missing-http2-module.test.js.tap +8 -0
  250. package/.tap/test-results/test/http2/plain.test.js.tap +22 -0
  251. package/.tap/test-results/test/http2/secure-with-fallback.test.js.tap +40 -0
  252. package/.tap/test-results/test/http2/secure.test.js.tap +27 -0
  253. package/.tap/test-results/test/http2/unknown-http-method.test.js.tap +9 -0
  254. package/.tap/test-results/test/https/custom-https-server.test.js.tap +10 -0
  255. package/.tap/test-results/test/https/https.test.js.tap +45 -0
  256. package/.tap/test-results/test/imports.test.js.tap +14 -0
  257. package/.tap/test-results/test/inject.test.js.tap +165 -0
  258. package/.tap/test-results/test/internals/all.test.js.tap +42 -0
  259. package/.tap/test-results/test/internals/contentTypeParser.test.js.tap +14 -0
  260. package/.tap/test-results/test/internals/context.test.js.tap +14 -0
  261. package/.tap/test-results/test/internals/decorator.test.js.tap +51 -0
  262. package/.tap/test-results/test/internals/errors.test.js.tap +1212 -0
  263. package/.tap/test-results/test/internals/handleRequest.test.js.tap +69 -0
  264. package/.tap/test-results/test/internals/hookRunner.test.js.tap +143 -0
  265. package/.tap/test-results/test/internals/hooks.test.js.tap +45 -0
  266. package/.tap/test-results/test/internals/initialConfig.test.js.tap +125 -0
  267. package/.tap/test-results/test/internals/logger.test.js.tap +71 -0
  268. package/.tap/test-results/test/internals/plugin.test.js.tap +48 -0
  269. package/.tap/test-results/test/internals/reply-serialize.test.js.tap +166 -0
  270. package/.tap/test-results/test/internals/reply.test.js.tap +688 -0
  271. package/.tap/test-results/test/internals/reqIdGenFactory.test.js.tap +74 -0
  272. package/.tap/test-results/test/internals/request-validate.test.js.tap +384 -0
  273. package/.tap/test-results/test/internals/request.test.js.tap +163 -0
  274. package/.tap/test-results/test/internals/server.test.js.tap +30 -0
  275. package/.tap/test-results/test/internals/validation.test.js.tap +121 -0
  276. package/.tap/test-results/test/keepAliveTimeout.test.js.tap +12 -0
  277. package/.tap/test-results/test/listen.1.test.js.tap +31 -0
  278. package/.tap/test-results/test/listen.2.test.js.tap +46 -0
  279. package/.tap/test-results/test/listen.3.test.js.tap +25 -0
  280. package/.tap/test-results/test/listen.4.test.js.tap +51 -0
  281. package/.tap/test-results/test/lock.test.js.tap +29 -0
  282. package/.tap/test-results/test/logger/instantiation.test.js.tap +92 -0
  283. package/.tap/test-results/test/logger/logging.test.js.tap +117 -0
  284. package/.tap/test-results/test/logger/options.test.js.tap +165 -0
  285. package/.tap/test-results/test/logger/request.test.js.tap +82 -0
  286. package/.tap/test-results/test/logger/response.test.js.tap +38 -0
  287. package/.tap/test-results/test/maxRequestsPerSocket.test.js.tap +44 -0
  288. package/.tap/test-results/test/method-missing.test.js.tap +8 -0
  289. package/.tap/test-results/test/middleware.test.js.tap +17 -0
  290. package/.tap/test-results/test/mkcalendar.test.js.tap +43 -0
  291. package/.tap/test-results/test/mkcol.test.js.tap +14 -0
  292. package/.tap/test-results/test/move.test.js.tap +15 -0
  293. package/.tap/test-results/test/noop-set.test.js.tap +8 -0
  294. package/.tap/test-results/test/nullable-validation.test.js.tap +36 -0
  295. package/.tap/test-results/test/options.error-handler.test.js.tap +186 -0
  296. package/.tap/test-results/test/options.test.js.tap +174 -0
  297. package/.tap/test-results/test/output-validation.test.js.tap +66 -0
  298. package/.tap/test-results/test/patch.error-handler.test.js.tap +206 -0
  299. package/.tap/test-results/test/patch.test.js.tap +182 -0
  300. package/.tap/test-results/test/plugin.1.test.js.tap +78 -0
  301. package/.tap/test-results/test/plugin.2.test.js.tap +102 -0
  302. package/.tap/test-results/test/plugin.3.test.js.tap +58 -0
  303. package/.tap/test-results/test/plugin.4.test.js.tap +164 -0
  304. package/.tap/test-results/test/post-empty-body.test.js.tap +8 -0
  305. package/.tap/test-results/test/pretty-print.test.js.tap +82 -0
  306. package/.tap/test-results/test/promises.test.js.tap +46 -0
  307. package/.tap/test-results/test/propfind.test.js.tap +43 -0
  308. package/.tap/test-results/test/proppatch.test.js.tap +29 -0
  309. package/.tap/test-results/test/proto-poisoning.test.js.tap +47 -0
  310. package/.tap/test-results/test/put.error-handler.test.js.tap +206 -0
  311. package/.tap/test-results/test/put.test.js.tap +182 -0
  312. package/.tap/test-results/test/register.test.js.tap +61 -0
  313. package/.tap/test-results/test/reply-code.test.js.tap +40 -0
  314. package/.tap/test-results/test/reply-earlyHints.test.js.tap +22 -0
  315. package/.tap/test-results/test/reply-error.test.js.tap +643 -0
  316. package/.tap/test-results/test/reply-trailers.test.js.tap +176 -0
  317. package/.tap/test-results/test/report.test.js.tap +43 -0
  318. package/.tap/test-results/test/request-error.test.js.tap +98 -0
  319. package/.tap/test-results/test/request-id.test.js.tap +38 -0
  320. package/.tap/test-results/test/request.deprecated.test.js.tap +13 -0
  321. package/.tap/test-results/test/requestTimeout.test.js.tap +21 -0
  322. package/.tap/test-results/test/route-hooks.test.js.tap +498 -0
  323. package/.tap/test-results/test/route-prefix.test.js.tap +195 -0
  324. package/.tap/test-results/test/route-shorthand.test.js.tap +190 -0
  325. package/.tap/test-results/test/route.1.test.js.tap +93 -0
  326. package/.tap/test-results/test/route.2.test.js.tap +28 -0
  327. package/.tap/test-results/test/route.3.test.js.tap +39 -0
  328. package/.tap/test-results/test/route.4.test.js.tap +32 -0
  329. package/.tap/test-results/test/route.5.test.js.tap +54 -0
  330. package/.tap/test-results/test/route.6.test.js.tap +81 -0
  331. package/.tap/test-results/test/route.7.test.js.tap +93 -0
  332. package/.tap/test-results/test/route.8.test.js.tap +38 -0
  333. package/.tap/test-results/test/router-options.test.js.tap +104 -0
  334. package/.tap/test-results/test/same-shape.test.js.tap +22 -0
  335. package/.tap/test-results/test/schema-examples.test.js.tap +85 -0
  336. package/.tap/test-results/test/schema-feature.test.js.tap +445 -0
  337. package/.tap/test-results/test/schema-serialization.test.js.tap +194 -0
  338. package/.tap/test-results/test/schema-special-usage.test.js.tap +186 -0
  339. package/.tap/test-results/test/schema-validation.test.js.tap +199 -0
  340. package/.tap/test-results/test/search.test.js.tap +77 -0
  341. package/.tap/test-results/test/serialize-response.test.js.tap +26 -0
  342. package/.tap/test-results/test/server.test.js.tap +65 -0
  343. package/.tap/test-results/test/set-error-handler.test.js.tap +7 -0
  344. package/.tap/test-results/test/skip-reply-send.test.js.tap +272 -0
  345. package/.tap/test-results/test/stream.1.test.js.tap +36 -0
  346. package/.tap/test-results/test/stream.2.test.js.tap +20 -0
  347. package/.tap/test-results/test/stream.3.test.js.tap +34 -0
  348. package/.tap/test-results/test/stream.4.test.js.tap +40 -0
  349. package/.tap/test-results/test/stream.5.test.js.tap +37 -0
  350. package/.tap/test-results/test/sync-routes.test.js.tap +19 -0
  351. package/.tap/test-results/test/throw.test.js.tap +116 -0
  352. package/.tap/test-results/test/trace.test.js.tap +7 -0
  353. package/.tap/test-results/test/trust-proxy.test.js.tap +109 -0
  354. package/.tap/test-results/test/type-provider.test.js.tap +12 -0
  355. package/.tap/test-results/test/unlock.test.js.tap +14 -0
  356. package/.tap/test-results/test/upgrade.test.js.tap +8 -0
  357. package/.tap/test-results/test/url-rewriting.test.js.tap +39 -0
  358. package/.tap/test-results/test/useSemicolonDelimiter.test.js.tap +33 -0
  359. package/.tap/test-results/test/validation-error-handling.test.js.tap +180 -0
  360. package/.tap/test-results/test/versioned-routes.test.js.tap +151 -0
  361. package/.tap/test-results/test/web-api.test.js.tap +51 -0
  362. package/.tap/test-results/test/wrapThenable.test.js.tap +11 -0
  363. package/.taprc +1 -0
  364. package/README.md +4 -0
  365. package/SPONSORS.md +1 -1
  366. package/docs/Guides/Database.md +2 -2
  367. package/docs/Guides/Delay-Accepting-Requests.md +1 -1
  368. package/docs/Guides/Detecting-When-Clients-Abort.md +6 -4
  369. package/docs/Guides/Ecosystem.md +21 -11
  370. package/docs/Guides/Getting-Started.md +2 -0
  371. package/docs/Guides/Plugins-Guide.md +1 -1
  372. package/docs/Guides/Prototype-Poisoning.md +1 -1
  373. package/docs/Reference/Errors.md +2 -3
  374. package/docs/Reference/Hooks.md +5 -3
  375. package/docs/Reference/LTS.md +32 -20
  376. package/docs/Reference/Logging.md +1 -1
  377. package/docs/Reference/Reply.md +8 -8
  378. package/docs/Reference/Request.md +2 -2
  379. package/docs/Reference/Routes.md +3 -2
  380. package/docs/Reference/Server.md +11 -5
  381. package/docs/Reference/Type-Providers.md +10 -4
  382. package/docs/Reference/TypeScript.md +25 -24
  383. package/docs/Reference/Validation-and-Serialization.md +1 -1
  384. package/docs/Reference/Warnings.md +2 -0
  385. package/fastify.js +3 -4
  386. package/lib/error-handler.js +34 -21
  387. package/lib/error-serializer.js +75 -18
  388. package/lib/fourOhFour.js +5 -3
  389. package/lib/handleRequest.js +2 -1
  390. package/lib/httpMethods.js +3 -1
  391. package/lib/reply.js +10 -4
  392. package/lib/route.js +5 -1
  393. package/lib/warnings.js +6 -0
  394. package/lib/wrapThenable.js +2 -0
  395. package/package.json +3 -3
  396. package/test/404s.test.js +2 -2
  397. package/test/500s.test.js +32 -0
  398. package/test/close-pipelining.test.js +11 -4
  399. package/test/close.test.js +1 -1
  400. package/test/encapsulated-error-handler.test.js +1 -1
  401. package/test/esm/errorCodes.test.mjs +10 -0
  402. package/test/esm/named-exports.mjs +1 -0
  403. package/test/esm/other.mjs +1 -0
  404. package/test/esm/plugin.mjs +1 -0
  405. package/test/has-route.test.js +17 -1
  406. package/test/hooks.test.js +2 -2
  407. package/test/internals/handleRequest.test.js +2 -2
  408. package/test/internals/reply.test.js +33 -3
  409. package/test/lock.test.js +43 -10
  410. package/test/logger/instantiation.test.js +1 -1
  411. package/test/logger/logging.test.js +37 -16
  412. package/test/logger/options.test.js +1 -1
  413. package/test/mkcalendar.test.js +165 -0
  414. package/test/propfind.test.js +40 -8
  415. package/test/proppatch.test.js +48 -18
  416. package/test/report.test.js +161 -0
  417. package/test/schema-examples.test.js +1 -1
  418. package/test/schema-feature.test.js +6 -6
  419. package/test/schema-serialization.test.js +2 -2
  420. package/test/schema-special-usage.test.js +1 -1
  421. package/test/skip-reply-send.test.js +1 -1
  422. package/test/stream.5.test.js +2 -2
  423. package/test/types/instance.test-d.ts +1 -1
  424. package/test/types/reply.test-d.ts +3 -3
  425. package/test/types/request.test-d.ts +2 -2
  426. package/test/types/type-provider.test-d.ts +9 -5
  427. package/types/reply.d.ts +10 -6
  428. package/types/request.d.ts +2 -2
  429. package/types/route.d.ts +26 -26
  430. package/types/type-provider.d.ts +1 -1
  431. package/types/utils.d.ts +6 -1
  432. /package/test/esm/{esm.mjs → esm.test.mjs} +0 -0
@@ -207,7 +207,7 @@ test('Should throw of the schema does not exists in output', t => {
207
207
 
208
208
  fastify.ready(err => {
209
209
  t.equal(err.code, 'FST_ERR_SCH_SERIALIZATION_BUILD')
210
- t.match(err.message, /^Failed building the serialization schema for GET: \/:id, due to error Cannot find reference.*/) // error from fast-json-strinfigy
210
+ t.match(err.message, /^Failed building the serialization schema for GET: \/:id, due to error Cannot find reference.*/) // error from fast-json-stringify
211
211
  })
212
212
  })
213
213
 
@@ -1267,7 +1267,7 @@ test('Check how many AJV instances are built #2 - verify validatorPool', t => {
1267
1267
  fastify.register(function sibling3 (instance, opts, done) {
1268
1268
  addRandomRoute(instance)
1269
1269
 
1270
- // this trigger to dont't reuse the same compiler pool
1270
+ // this trigger to don't reuse the same compiler pool
1271
1271
  instance.addSchema({ $id: 'diff', type: 'object' })
1272
1272
 
1273
1273
  t.notOk(instance.validatorCompiler, 'validator not initialized')
@@ -1555,7 +1555,7 @@ test('setSchemaController: Inherits correctly parent schemas with a customized v
1555
1555
 
1556
1556
  t.equal(json.message, 'querystring/msg must be array')
1557
1557
  t.equal(json.statusCode, 400)
1558
- t.equal(res.statusCode, 400, 'Should not coearce the string into array')
1558
+ t.equal(res.statusCode, 400, 'Should not coerce the string into array')
1559
1559
  })
1560
1560
 
1561
1561
  test('setSchemaController: Inherits buildSerializer from parent if not present within the instance', async t => {
@@ -1785,7 +1785,7 @@ test('setSchemaController: Inherits buildValidator from parent if not present wi
1785
1785
  t.equal(rootSerializerCalled, 0, 'Should be called from the child')
1786
1786
  t.equal(rootValidatorCalled, 1, 'Should not be called from the child')
1787
1787
  t.equal(childSerializerCalled, 1, 'Should be called from the child')
1788
- t.equal(res.statusCode, 400, 'Should not coearce the string into array')
1788
+ t.equal(res.statusCode, 400, 'Should not coerce the string into array')
1789
1789
  })
1790
1790
 
1791
1791
  test('Should throw if not default validator passed', async t => {
@@ -1867,7 +1867,7 @@ test('Should throw if not default validator passed', async t => {
1867
1867
  })
1868
1868
 
1869
1869
  t.equal(res.json().message, 'querystring/msg must be array')
1870
- t.equal(res.statusCode, 400, 'Should not coearce the string into array')
1870
+ t.equal(res.statusCode, 400, 'Should not coerce the string into array')
1871
1871
  } catch (err) {
1872
1872
  t.error(err)
1873
1873
  }
@@ -1928,7 +1928,7 @@ test('Should coerce the array if the default validator is used', async t => {
1928
1928
  })
1929
1929
 
1930
1930
  t.equal(res.statusCode, 200)
1931
- t.same(res.json(), { msg: ['string'] }, 'Should coearce the string into array')
1931
+ t.same(res.json(), { msg: ['string'] }, 'Should coerce the string into array')
1932
1932
  } catch (err) {
1933
1933
  t.error(err)
1934
1934
  }
@@ -55,7 +55,7 @@ test('custom serializer options', t => {
55
55
 
56
56
  fastify.inject('/', (err, res) => {
57
57
  t.error(err)
58
- t.equal(res.payload, '5', 'it must use the ceil rouding')
58
+ t.equal(res.payload, '5', 'it must use the ceil rounding')
59
59
  t.equal(res.statusCode, 200)
60
60
  })
61
61
  })
@@ -945,7 +945,7 @@ test('error in custom schema serialize compiler, throw FST_ERR_SCH_SERIALIZATION
945
945
  })
946
946
  })
947
947
 
948
- test('Errors in searilizer sended to errorHandler', async t => {
948
+ test('Errors in serializer send to errorHandler', async t => {
949
949
  let savedError
950
950
 
951
951
  const fastify = Fastify()
@@ -703,7 +703,7 @@ test('Custom schema object should not trigger FST_ERR_SCH_DUPLICATE', async t =>
703
703
  t.pass('fastify is ready')
704
704
  })
705
705
 
706
- test('The default schema compilers should not be called when overwritte by the user', async t => {
706
+ test('The default schema compilers should not be called when overwritten by the user', async t => {
707
707
  const Fastify = t.mock('../', {
708
708
  '@fastify/ajv-compiler': () => {
709
709
  t.fail('The default validator compiler should not be called')
@@ -220,7 +220,7 @@ function testHandlerOrBeforeHandlerHook (test, hookOrHandler) {
220
220
  })
221
221
  })
222
222
 
223
- test('Throwing an error doesnt trigger any hooks', t => {
223
+ test('Throwing an error does not trigger any hooks', t => {
224
224
  const stream = split(JSON.parse)
225
225
  const app = Fastify({
226
226
  logger: {
@@ -150,7 +150,7 @@ test('request terminated should not crash fastify', t => {
150
150
 
151
151
  await new Promise((resolve) => { setTimeout(resolve, 100).unref() })
152
152
 
153
- stream.push('<h1>should disply on second stream</h1>')
153
+ stream.push('<h1>should display on second stream</h1>')
154
154
  stream.push(null)
155
155
  return reply
156
156
  })
@@ -184,7 +184,7 @@ test('request terminated should not crash fastify', t => {
184
184
  payload += chunk.toString()
185
185
  })
186
186
  res.on('end', function () {
187
- t.equal(payload, '<h1>HTML</h1><h1>should disply on second stream</h1>')
187
+ t.equal(payload, '<h1>HTML</h1><h1>should display on second stream</h1>')
188
188
  t.pass('should end properly')
189
189
  })
190
190
  })
@@ -253,7 +253,7 @@ expectAssignable<void>(server.listen({ port: 3000, host: '0.0.0.0', backlog: 42
253
253
  expectAssignable<void>(server.listen({ port: 3000, host: '0.0.0.0', backlog: 42, exclusive: true }, () => {}))
254
254
  expectAssignable<void>(server.listen({ port: 3000, host: '::/0', ipv6Only: true }, () => {}))
255
255
 
256
- // test listen opts objects Typescript deprectation exclusion
256
+ // test listen opts objects Typescript deprecation exclusion
257
257
  expectNotDeprecated(server.listen())
258
258
  expectNotDeprecated(server.listen({ port: 3000 }))
259
259
  expectNotDeprecated(server.listen({ port: 3000, host: '0.0.0.0' }))
@@ -29,7 +29,7 @@ const getHandler: RouteHandlerMethod = function (_request, reply) {
29
29
  expectAssignable<() => { [key: string]: number | string | string[] | undefined }>(reply.getHeaders)
30
30
  expectAssignable<(key: string) => FastifyReply>(reply.removeHeader)
31
31
  expectAssignable<(key: string) => boolean>(reply.hasHeader)
32
- expectType<{(statusCode: number, url: string): FastifyReply; (url: string): FastifyReply }>(reply.redirect)
32
+ expectType<{(statusCode: number, url: string): FastifyReply;(url: string, statusCode?: number): FastifyReply;}>(reply.redirect)
33
33
  expectType<() => FastifyReply>(reply.hijack)
34
34
  expectType<() => void>(reply.callNotFound)
35
35
  // Test reply.getResponseTime() deprecation
@@ -42,8 +42,8 @@ const getHandler: RouteHandlerMethod = function (_request, reply) {
42
42
  expectType<(key: string) => boolean>(reply.hasTrailer)
43
43
  expectType<(key: string) => FastifyReply>(reply.removeTrailer)
44
44
  expectType<FastifyInstance>(reply.server)
45
- expectAssignable<((httpStatus: string) => DefaultSerializationFunction)>(reply.getSerializationFunction)
46
- expectAssignable<((schema: {[key: string]: unknown}) => DefaultSerializationFunction)>(reply.getSerializationFunction)
45
+ expectAssignable<((httpStatus: string) => DefaultSerializationFunction | undefined)>(reply.getSerializationFunction)
46
+ expectAssignable<((schema: {[key: string]: unknown}) => DefaultSerializationFunction | undefined)>(reply.getSerializationFunction)
47
47
  expectAssignable<((schema: {[key: string]: unknown}, httpStatus?: string) => DefaultSerializationFunction)>(reply.compileSerializationSchema)
48
48
  expectAssignable<((input: {[key: string]: unknown}, schema: {[key: string]: unknown}, httpStatus?: string) => unknown)>(reply.serializeInput)
49
49
  expectAssignable<((input: {[key: string]: unknown}, httpStatus: string) => unknown)>(reply.serializeInput)
@@ -79,8 +79,8 @@ const getHandler: RouteHandler = function (request, _reply) {
79
79
  expectType<FastifyRequestContext<ContextConfigDefault>['config']>(request.routeConfig)
80
80
  expectType<FastifyRequestContext<ContextConfigDefault>['config']>(request.routeOptions.config)
81
81
  expectType<ContextConfigDefault & FastifyRouteConfig & FastifyContextConfig>(request.routeOptions.config)
82
- expectType<FastifySchema>(request.routeSchema)
83
- expectType<FastifySchema>(request.routeOptions.schema)
82
+ expectType<FastifySchema | undefined>(request.routeSchema)
83
+ expectType<FastifySchema | undefined>(request.routeOptions.schema)
84
84
  expectType<RouteHandlerMethod>(request.routeOptions.handler)
85
85
  expectType<string | undefined>(request.routeOptions.url)
86
86
 
@@ -164,7 +164,7 @@ expectAssignable(server.withTypeProvider<JsonSchemaToTsProvider>().route({
164
164
  }
165
165
  }))
166
166
 
167
- // infering schema `as const`
167
+ // inferring schema `as const`
168
168
 
169
169
  expectAssignable(server.withTypeProvider<JsonSchemaToTsProvider>().get(
170
170
  '/',
@@ -469,7 +469,9 @@ expectAssignable(server.withTypeProvider<TypeBoxProvider>().get(
469
469
  res.send('hello')
470
470
  res.send(42)
471
471
  res.send({ error: 'error' })
472
- expectType<(payload?: string | number | { error: string }) => typeof res>(res.code(200).send)
472
+ expectType<(payload?: string) => typeof res>(res.code(200).send)
473
+ expectType<(payload?: number) => typeof res>(res.code(400).send)
474
+ expectType<(payload?: { error: string }) => typeof res>(res.code(500).send)
473
475
  expectError<(payload?: unknown) => typeof res>(res.code(200).send)
474
476
  }
475
477
  ))
@@ -699,7 +701,9 @@ expectAssignable(server.withTypeProvider<JsonSchemaToTsProvider>().get(
699
701
  res.send('hello')
700
702
  res.send(42)
701
703
  res.send({ error: 'error' })
702
- expectType<(payload?: string | number | { [x: string]: unknown, error?: string | undefined }) => typeof res>(res.code(200).send)
704
+ expectType<(payload?: string) => typeof res>(res.code(200).send)
705
+ expectType<(payload?: number) => typeof res>(res.code(400).send)
706
+ expectType<(payload?: { [x: string]: unknown; error?: string }) => typeof res>(res.code(500).send)
703
707
  expectError<(payload?: unknown) => typeof res>(res.code(200).send)
704
708
  }
705
709
  ))
@@ -1048,7 +1052,7 @@ expectAssignable(server.withTypeProvider<InlineHandlerProvider>().get(
1048
1052
  // Handlers: Auxiliary
1049
1053
  // -------------------------------------------------------------------
1050
1054
 
1051
- interface AuxiliaryHandlerProvider extends FastifyTypeProvider { output: 'handler-auxiliary' }
1055
+ interface AuxiliaryHandlerProvider extends FastifyTypeProvider { output: this['input'] }
1052
1056
 
1053
1057
  // Auxiliary handlers are likely shared for multiple routes and thus should infer as unknown due to potential varying parameters
1054
1058
  function auxiliaryHandler (request: FastifyRequest, reply: FastifyReply, done: HookHandlerDoneFunction): void {
@@ -1059,7 +1063,7 @@ expectAssignable(server.withTypeProvider<AuxiliaryHandlerProvider>().get(
1059
1063
  '/',
1060
1064
  {
1061
1065
  onRequest: auxiliaryHandler,
1062
- schema: { body: null }
1066
+ schema: { body: 'handler-auxiliary' }
1063
1067
  },
1064
1068
  (req) => {
1065
1069
  expectType<'handler-auxiliary'>(req.body)
package/types/reply.d.ts CHANGED
@@ -5,7 +5,7 @@ import { FastifyBaseLogger } from './logger'
5
5
  import { FastifyRequest } from './request'
6
6
  import { RouteGenericInterface } from './route'
7
7
  import { FastifySchema } from './schema'
8
- import { FastifyReplyType, FastifyTypeProvider, FastifyTypeProviderDefault, ResolveFastifyReplyType } from './type-provider'
8
+ import { FastifyReplyType, FastifyTypeProvider, FastifyTypeProviderDefault, ResolveFastifyReplyType, CallTypeProvider } from './type-provider'
9
9
  import { CodeToReplyKey, ContextConfigDefault, HttpKeys, RawReplyDefaultExpression, RawRequestDefaultExpression, RawServerBase, RawServerDefault, ReplyDefault, ReplyKeysToCodes, HttpHeader } from './utils'
10
10
 
11
11
  export interface ReplyGenericInterface {
@@ -23,7 +23,9 @@ type ReplyTypeConstrainer<RouteGenericReply, Code extends ReplyKeysToCodes<keyof
23
23
  export type ResolveReplyTypeWithRouteGeneric<RouteGenericReply, Code extends ReplyKeysToCodes<keyof RouteGenericReply>,
24
24
  SchemaCompiler extends FastifySchema = FastifySchema,
25
25
  TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault> =
26
- ResolveFastifyReplyType<TypeProvider, SchemaCompiler, { Reply: ReplyTypeConstrainer<RouteGenericReply, Code> }>
26
+ Code extends keyof SchemaCompiler['response'] ?
27
+ CallTypeProvider<TypeProvider, SchemaCompiler['response'][Code]> :
28
+ ResolveFastifyReplyType<TypeProvider, SchemaCompiler, { Reply: ReplyTypeConstrainer<RouteGenericReply, Code> }>
27
29
  /**
28
30
  * FastifyReply is an instance of the standard http or http2 reply types.
29
31
  * It defaults to http.ServerResponse, and it also extends the relative reply object.
@@ -55,9 +57,11 @@ export interface FastifyReply<
55
57
  getHeaders(): Record<HttpHeader, number | string | string[] | undefined>;
56
58
  removeHeader(key: HttpHeader): FastifyReply<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider>;
57
59
  hasHeader(key: HttpHeader): boolean;
58
- // Note: should consider refactoring the argument order for redirect. statusCode is optional so it should be after the required url param
60
+ /**
61
+ * @deprecated The `reply.redirect()` method has a new signature: `reply.reply.redirect(url: string, code?: number)`. It will be enforced in `fastify@v5`'.
62
+ */
59
63
  redirect(statusCode: number, url: string): FastifyReply<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider>;
60
- redirect(url: string): FastifyReply<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider>;
64
+ redirect(url: string, statusCode?: number): FastifyReply<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider>;
61
65
  hijack(): FastifyReply<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider>;
62
66
  callNotFound(): void;
63
67
  /**
@@ -68,8 +72,8 @@ export interface FastifyReply<
68
72
  serializer(fn: (payload: any) => string): FastifyReply<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider>;
69
73
  serialize(payload: any): string | ArrayBuffer | Buffer;
70
74
  // Serialization Methods
71
- getSerializationFunction(httpStatus: string, contentType?: string): (payload: {[key: string]: unknown}) => string;
72
- getSerializationFunction(schema: {[key: string]: unknown}): (payload: {[key: string]: unknown}) => string;
75
+ getSerializationFunction(httpStatus: string, contentType?: string): ((payload: {[key: string]: unknown}) => string) | undefined;
76
+ getSerializationFunction(schema: {[key: string]: unknown}): ((payload: {[key: string]: unknown}) => string) | undefined;
73
77
  compileSerializationSchema(schema: {[key: string]: unknown}, httpStatus?: string, contentType?: string): (payload: {[key: string]: unknown}) => string;
74
78
  serializeInput(input: {[key: string]: unknown}, schema: {[key: string]: unknown}, httpStatus?: string, contentType?: string): string;
75
79
  serializeInput(input: {[key: string]: unknown}, httpStatus: string, contentType?: string): unknown;
@@ -31,7 +31,7 @@ export interface RequestRouteOptions<ContextConfig = ContextConfigDefault, Schem
31
31
  exposeHeadRoute: boolean;
32
32
  prefixTrailingSlash: string;
33
33
  config: FastifyContextConfig & FastifyRouteConfig & ContextConfig;
34
- schema: SchemaCompiler;
34
+ schema?: SchemaCompiler; // it is empty for 404 requests
35
35
  handler: RouteHandlerMethod;
36
36
  }
37
37
 
@@ -64,7 +64,7 @@ export interface FastifyRequest<RouteGeneric extends RouteGenericInterface = Rou
64
64
  body: RequestType['body'];
65
65
  context: FastifyRequestContext<ContextConfig>;
66
66
  routeConfig: FastifyRequestContext<ContextConfig>['config'];
67
- routeSchema: FastifySchema
67
+ routeSchema?: FastifySchema; // it is empty for 404 requests
68
68
 
69
69
  /** in order for this to be used the user should ensure they have set the attachValidation option. */
70
70
  validationError?: Error & { validation: any; validationContext: string };
package/types/route.d.ts CHANGED
@@ -12,7 +12,7 @@ import {
12
12
  FastifyTypeProviderDefault,
13
13
  ResolveFastifyReplyReturnType
14
14
  } from './type-provider'
15
- import { ContextConfigDefault, HTTPMethods, RawReplyDefaultExpression, RawRequestDefaultExpression, RawServerBase, RawServerDefault } from './utils'
15
+ import { ContextConfigDefault, HTTPMethods, NoInferCompat, RawReplyDefaultExpression, RawRequestDefaultExpression, RawServerBase, RawServerDefault } from './utils'
16
16
 
17
17
  export interface FastifyRouteConfig {
18
18
  url: string;
@@ -48,8 +48,8 @@ export interface RouteShorthandOptions<
48
48
  attachValidation?: boolean;
49
49
  exposeHeadRoute?: boolean;
50
50
 
51
- validatorCompiler?: FastifySchemaCompiler<SchemaCompiler>;
52
- serializerCompiler?: FastifySerializerCompiler<SchemaCompiler>;
51
+ validatorCompiler?: FastifySchemaCompiler<NoInferCompat<SchemaCompiler>>;
52
+ serializerCompiler?: FastifySerializerCompiler<NoInferCompat<SchemaCompiler>>;
53
53
  bodyLimit?: number;
54
54
  logLevel?: LogLevel;
55
55
  config?: Omit<FastifyRequestContext<ContextConfig>['config'], 'url' | 'method'>;
@@ -59,33 +59,33 @@ export interface RouteShorthandOptions<
59
59
  errorHandler?: (
60
60
  this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,
61
61
  error: FastifyError,
62
- request: FastifyRequest<RouteGeneric, RawServer, RawRequest, SchemaCompiler, TypeProvider, ContextConfig, Logger>,
63
- reply: FastifyReply<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider>
62
+ request: FastifyRequest<RouteGeneric, RawServer, RawRequest, NoInferCompat<SchemaCompiler>, TypeProvider, ContextConfig, Logger>,
63
+ reply: FastifyReply<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInferCompat<SchemaCompiler>, TypeProvider>
64
64
  ) => void;
65
65
  childLoggerFactory?: FastifyChildLoggerFactory<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
66
66
  schemaErrorFormatter?: SchemaErrorFormatter;
67
67
 
68
68
  // hooks
69
- onRequest?: onRequestMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
70
- | onRequestMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>[];
71
- preParsing?: preParsingMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
72
- | preParsingMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>[];
73
- preValidation?: preValidationMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
74
- | preValidationMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>[];
75
- preHandler?: preHandlerMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
76
- | preHandlerMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>[];
77
- preSerialization?: preSerializationMetaHookHandler<unknown, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
78
- | preSerializationMetaHookHandler<unknown, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>[];
79
- onSend?: onSendMetaHookHandler<unknown, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
80
- | onSendMetaHookHandler<unknown, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>[];
81
- onResponse?: onResponseMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
82
- | onResponseMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>[];
83
- onTimeout?: onTimeoutMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
84
- | onTimeoutMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>[];
85
- onError?: onErrorMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, FastifyError, SchemaCompiler, TypeProvider, Logger>
86
- | onErrorMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, FastifyError, SchemaCompiler, TypeProvider, Logger>[];
87
- onRequestAbort?: onRequestAbortMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>
88
- | onRequestAbortMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>[];
69
+ onRequest?: onRequestMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInferCompat<SchemaCompiler>, TypeProvider, Logger>
70
+ | onRequestMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInferCompat<SchemaCompiler>, TypeProvider, Logger>[];
71
+ preParsing?: preParsingMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInferCompat<SchemaCompiler>, TypeProvider, Logger>
72
+ | preParsingMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInferCompat<SchemaCompiler>, TypeProvider, Logger>[];
73
+ preValidation?: preValidationMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInferCompat<SchemaCompiler>, TypeProvider, Logger>
74
+ | preValidationMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInferCompat<SchemaCompiler>, TypeProvider, Logger>[];
75
+ preHandler?: preHandlerMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInferCompat<SchemaCompiler>, TypeProvider, Logger>
76
+ | preHandlerMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInferCompat<SchemaCompiler>, TypeProvider, Logger>[];
77
+ preSerialization?: preSerializationMetaHookHandler<unknown, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInferCompat<SchemaCompiler>, TypeProvider, Logger>
78
+ | preSerializationMetaHookHandler<unknown, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInferCompat<SchemaCompiler>, TypeProvider, Logger>[];
79
+ onSend?: onSendMetaHookHandler<unknown, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInferCompat<SchemaCompiler>, TypeProvider, Logger>
80
+ | onSendMetaHookHandler<unknown, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInferCompat<SchemaCompiler>, TypeProvider, Logger>[];
81
+ onResponse?: onResponseMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInferCompat<SchemaCompiler>, TypeProvider, Logger>
82
+ | onResponseMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInferCompat<SchemaCompiler>, TypeProvider, Logger>[];
83
+ onTimeout?: onTimeoutMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInferCompat<SchemaCompiler>, TypeProvider, Logger>
84
+ | onTimeoutMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInferCompat<SchemaCompiler>, TypeProvider, Logger>[];
85
+ onError?: onErrorMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, FastifyError, NoInferCompat<SchemaCompiler>, TypeProvider, Logger>
86
+ | onErrorMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, FastifyError, NoInferCompat<SchemaCompiler>, TypeProvider, Logger>[];
87
+ onRequestAbort?: onRequestAbortMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInferCompat<SchemaCompiler>, TypeProvider, Logger>
88
+ | onRequestAbortMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInferCompat<SchemaCompiler>, TypeProvider, Logger>[];
89
89
  }
90
90
  /**
91
91
  * Route handler method declaration.
@@ -162,7 +162,7 @@ export interface RouteOptions<
162
162
  > extends RouteShorthandOptions<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> {
163
163
  method: HTTPMethods | HTTPMethods[];
164
164
  url: string;
165
- handler: RouteHandlerMethod<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>;
165
+ handler: RouteHandlerMethod<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInferCompat<SchemaCompiler>, TypeProvider, Logger>;
166
166
  }
167
167
 
168
168
  export type RouteHandler<
@@ -72,7 +72,7 @@ export type FastifyReplyType<Reply = unknown> = Reply
72
72
 
73
73
  // Resolves the Reply type either via generic argument or from response schema. This type uses a different
74
74
  // resolution strategy to Requests where the Reply will infer a union of each status code type specified
75
- // by the user. The Reply can be explicitly overriden by users providing a generic Reply type on the route.
75
+ // by the user. The Reply can be explicitly overridden by users providing a generic Reply type on the route.
76
76
  export type ResolveFastifyReplyType<TypeProvider extends FastifyTypeProvider, SchemaCompiler extends FastifySchema, RouteGeneric extends RouteGenericInterface> = UndefinedToUnknown<KeysOf<RouteGeneric['Reply']> extends never ? ResolveReplyFromSchemaCompiler<TypeProvider, SchemaCompiler> : RouteGeneric['Reply']>
77
77
 
78
78
  // -----------------------------------------------------------------------------------------------
package/types/utils.d.ts CHANGED
@@ -6,7 +6,7 @@ import * as https from 'https'
6
6
  * Standard HTTP method strings
7
7
  */
8
8
  type _HTTPMethods = 'DELETE' | 'GET' | 'HEAD' | 'PATCH' | 'POST' | 'PUT' | 'OPTIONS' |
9
- 'PROPFIND' | 'PROPPATCH' | 'MKCOL' | 'COPY' | 'MOVE' | 'LOCK' | 'UNLOCK' | 'TRACE' | 'SEARCH'
9
+ 'PROPFIND' | 'PROPPATCH' | 'MKCOL' | 'COPY' | 'MOVE' | 'LOCK' | 'UNLOCK' | 'TRACE' | 'SEARCH' | 'REPORT' | 'MKCALENDAR'
10
10
 
11
11
  export type HTTPMethods = Uppercase<_HTTPMethods> | Lowercase<_HTTPMethods>
12
12
 
@@ -88,3 +88,8 @@ type OmitIndexSignature<T> = {
88
88
  * Use this type only for input values, not for output values.
89
89
  */
90
90
  export type HttpHeader = keyof OmitIndexSignature<http.OutgoingHttpHeaders> | (string & Record<never, never>);
91
+
92
+ // cheat for similar (same?) behavior as NoInfer but for TS <5.4
93
+ export type NoInferCompat<SC> = {
94
+ [K in keyof SC]: SC[K]
95
+ };
File without changes