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
@@ -0,0 +1,60 @@
1
+ 'use strict'
2
+
3
+ const t = require('tap')
4
+ const test = t.test
5
+ const sget = require('simple-get').concat
6
+ const Fastify = require('../fastify')
7
+ const supportedMethods = require('../lib/httpMethods').supportedMethods
8
+
9
+ test('route-shorthand', t => {
10
+ t.plan(supportedMethods.length + 1)
11
+ const test = t.test
12
+
13
+ for (const method of supportedMethods) {
14
+ test(`route-shorthand - ${method.toLowerCase()}`, t => {
15
+ t.plan(3)
16
+ const fastify = new Fastify()
17
+ fastify[method.toLowerCase()]('/', function (req, reply) {
18
+ t.equal(req.method, method)
19
+ reply.send()
20
+ })
21
+ fastify.listen({ port: 0 }, function (err) {
22
+ if (err) t.error(err)
23
+ t.teardown(() => { fastify.close() })
24
+ sget({
25
+ method,
26
+ url: 'http://localhost:' + fastify.server.address().port
27
+ }, (err, response, body) => {
28
+ t.error(err)
29
+ t.equal(response.statusCode, 200)
30
+ })
31
+ })
32
+ })
33
+ }
34
+
35
+ test('route-shorthand - all', t => {
36
+ t.plan(3 * supportedMethods.length)
37
+ const fastify = new Fastify()
38
+ let currentMethod = ''
39
+ fastify.all('/', function (req, reply) {
40
+ t.equal(req.method, currentMethod)
41
+ reply.send()
42
+ })
43
+ fastify.listen({ port: 0 }, async function (err) {
44
+ if (err) t.error(err)
45
+ t.teardown(() => { fastify.close() })
46
+ for (const method of supportedMethods) {
47
+ currentMethod = method
48
+ await new Promise(resolve => sget({
49
+ method,
50
+ url: 'http://localhost:' + fastify.server.address().port
51
+ }, (err, response, body) => {
52
+ t.error(err)
53
+ t.equal(response.statusCode, 200)
54
+ resolve()
55
+ })
56
+ )
57
+ }
58
+ })
59
+ })
60
+ })
@@ -704,7 +704,7 @@ test('Custom schema object should not trigger FST_ERR_SCH_DUPLICATE', async t =>
704
704
  })
705
705
 
706
706
  test('The default schema compilers should not be called when overwritten by the user', async t => {
707
- const Fastify = t.mock('../', {
707
+ const Fastify = t.mockRequire('../', {
708
708
  '@fastify/ajv-compiler': () => {
709
709
  t.fail('The default validator compiler should not be called')
710
710
  },
@@ -3,7 +3,7 @@
3
3
  const t = require('tap')
4
4
  const test = t.test
5
5
  const Fastify = require('..')
6
- const semver = require('semver')
6
+ const sget = require('simple-get').concat
7
7
  const undici = require('undici')
8
8
 
9
9
  test('listen should accept null port', t => {
@@ -72,7 +72,22 @@ test('listen should reject string port', async (t) => {
72
72
  }
73
73
  })
74
74
 
75
- test('abort signal', { skip: semver.lt(process.version, '16.0.0') }, t => {
75
+ test('Test for hostname and port', t => {
76
+ const app = Fastify()
77
+ t.teardown(app.close.bind(app))
78
+ app.get('/host', (req, res) => {
79
+ const host = 'localhost:8000'
80
+ t.equal(req.host, host)
81
+ t.equal(req.hostname, req.host.split(':')[0])
82
+ t.equal(req.port, Number(req.host.split(':')[1]))
83
+ res.send('ok')
84
+ })
85
+ app.listen({ port: 8000 }, () => {
86
+ sget('http://localhost:8000/host', () => { t.end() })
87
+ })
88
+ })
89
+
90
+ test('abort signal', t => {
76
91
  t.test('listen should not start server', t => {
77
92
  t.plan(2)
78
93
  function onClose (instance, done) {
@@ -68,7 +68,7 @@ test('onSend hook stream should work even if payload is not a proper stream', t
68
68
  child: () => { return spyLogger }
69
69
  }
70
70
 
71
- const fastify = Fastify({ logger: spyLogger })
71
+ const fastify = Fastify({ loggerInstance: spyLogger })
72
72
  fastify.get('/', function (req, reply) {
73
73
  reply.send({ hello: 'world' })
74
74
  })
@@ -3,16 +3,12 @@
3
3
  const t = require('tap')
4
4
  const test = t.test
5
5
  const sget = require('simple-get').concat
6
- const fs = require('node:fs')
7
6
  const errors = require('http-errors')
8
7
  const JSONStream = require('JSONStream')
9
- const send = require('send')
10
8
  const Readable = require('node:stream').Readable
11
9
  const split = require('split2')
12
- const semver = require('semver')
13
10
  const Fastify = require('..')
14
11
  const { kDisableRequestLogging } = require('../lib/symbols.js')
15
- const { getServerUrl } = require('./helper')
16
12
 
17
13
  test('Destroying streams prematurely should call abort method', t => {
18
14
  t.plan(7)
@@ -183,41 +179,3 @@ test('return a 404 if the stream emits a 404 error', t => {
183
179
  })
184
180
  })
185
181
  })
186
-
187
- test('should support send module 200 and 404', { skip: semver.gte(process.versions.node, '17.0.0') }, t => {
188
- t.plan(8)
189
- const fastify = Fastify()
190
-
191
- fastify.get('/', function (req, reply) {
192
- const stream = send(req.raw, __filename)
193
- reply.code(200).send(stream)
194
- })
195
-
196
- fastify.get('/error', function (req, reply) {
197
- const stream = send(req.raw, 'non-existing-file')
198
- reply.code(200).send(stream)
199
- })
200
-
201
- fastify.listen({ port: 0 }, err => {
202
- t.error(err)
203
- t.teardown(() => { fastify.close() })
204
-
205
- const url = getServerUrl(fastify)
206
-
207
- sget(url, function (err, response, data) {
208
- t.error(err)
209
- t.equal(response.headers['content-type'], 'application/javascript; charset=UTF-8')
210
- t.equal(response.statusCode, 200)
211
-
212
- fs.readFile(__filename, (err, expected) => {
213
- t.error(err)
214
- t.equal(expected.toString(), data.toString())
215
- })
216
- })
217
-
218
- sget(url + '/error', function (err, response) {
219
- t.error(err)
220
- t.equal(response.statusCode, 404)
221
- })
222
- })
223
- })
@@ -88,7 +88,7 @@ test('reply.send handles aborted requests', t => {
88
88
  child: () => { return spyLogger }
89
89
  }
90
90
  const fastify = Fastify({
91
- logger: spyLogger
91
+ loggerInstance: spyLogger
92
92
  })
93
93
 
94
94
  fastify.get('/', (req, reply) => {
@@ -136,7 +136,7 @@ test('request terminated should not crash fastify', t => {
136
136
  child: () => { return spyLogger }
137
137
  }
138
138
  const fastify = Fastify({
139
- logger: spyLogger
139
+ loggerInstance: spyLogger
140
140
  })
141
141
 
142
142
  fastify.get('/', async (req, reply) => {
@@ -26,9 +26,11 @@ const testRequestValues = (t, req, options) => {
26
26
  t.ok(req.ip, 'ip is defined')
27
27
  t.equal(req.ip, options.ip, 'gets ip from x-forwarded-for')
28
28
  }
29
- if (options.hostname) {
30
- t.ok(req.hostname, 'hostname is defined')
31
- t.equal(req.hostname, options.hostname, 'gets hostname from x-forwarded-host')
29
+ if (options.host) {
30
+ t.ok(req.host, 'host is defined')
31
+ t.equal(req.host, options.host, 'gets host from x-forwarded-host')
32
+ t.ok(req.hostname)
33
+ t.equal(req.hostname, options.host, 'gets hostname from x-forwarded-host')
32
34
  }
33
35
  if (options.ips) {
34
36
  t.same(req.ips, options.ips, 'gets ips from x-forwarded-for')
@@ -37,6 +39,10 @@ const testRequestValues = (t, req, options) => {
37
39
  t.ok(req.protocol, 'protocol is defined')
38
40
  t.equal(req.protocol, options.protocol, 'gets protocol from x-forwarded-proto')
39
41
  }
42
+ if (options.port) {
43
+ t.ok(req.port, 'port is defined')
44
+ t.equal(req.port, options.port, 'port is taken from x-forwarded-for or host')
45
+ }
40
46
  }
41
47
 
42
48
  let localhost
@@ -45,18 +51,18 @@ before(async function () {
45
51
  })
46
52
 
47
53
  test('trust proxy, not add properties to node req', (t) => {
48
- t.plan(8)
54
+ t.plan(14)
49
55
  const app = fastify({
50
56
  trustProxy: true
51
57
  })
52
58
  app.get('/trustproxy', function (req, reply) {
53
- testRequestValues(t, req, { ip: '1.1.1.1', hostname: 'example.com' })
54
- reply.code(200).send({ ip: req.ip, hostname: req.hostname })
59
+ testRequestValues(t, req, { ip: '1.1.1.1', host: 'example.com', port: app.server.address().port })
60
+ reply.code(200).send({ ip: req.ip, host: req.host })
55
61
  })
56
62
 
57
63
  app.get('/trustproxychain', function (req, reply) {
58
- testRequestValues(t, req, { ip: '2.2.2.2', ips: [localhost, '1.1.1.1', '2.2.2.2'] })
59
- reply.code(200).send({ ip: req.ip, hostname: req.hostname })
64
+ testRequestValues(t, req, { ip: '2.2.2.2', ips: [localhost, '1.1.1.1', '2.2.2.2'], port: app.server.address().port })
65
+ reply.code(200).send({ ip: req.ip, host: req.host })
60
66
  })
61
67
 
62
68
  t.teardown(app.close.bind(app))
@@ -70,14 +76,14 @@ test('trust proxy, not add properties to node req', (t) => {
70
76
  })
71
77
 
72
78
  test('trust proxy chain', (t) => {
73
- t.plan(3)
79
+ t.plan(9)
74
80
  const app = fastify({
75
81
  trustProxy: [localhost, '192.168.1.1']
76
82
  })
77
83
 
78
84
  app.get('/trustproxychain', function (req, reply) {
79
- testRequestValues(t, req, { ip: '1.1.1.1' })
80
- reply.code(200).send({ ip: req.ip, hostname: req.hostname })
85
+ testRequestValues(t, req, { ip: '1.1.1.1', host: 'example.com', port: app.server.address().port })
86
+ reply.code(200).send({ ip: req.ip, host: req.host })
81
87
  })
82
88
 
83
89
  t.teardown(app.close.bind(app))
@@ -90,13 +96,13 @@ test('trust proxy chain', (t) => {
90
96
  })
91
97
 
92
98
  test('trust proxy function', (t) => {
93
- t.plan(3)
99
+ t.plan(9)
94
100
  const app = fastify({
95
101
  trustProxy: (address) => address === localhost
96
102
  })
97
103
  app.get('/trustproxyfunc', function (req, reply) {
98
- testRequestValues(t, req, { ip: '1.1.1.1' })
99
- reply.code(200).send({ ip: req.ip, hostname: req.hostname })
104
+ testRequestValues(t, req, { ip: '1.1.1.1', host: 'example.com', port: app.server.address().port })
105
+ reply.code(200).send({ ip: req.ip, host: req.host })
100
106
  })
101
107
 
102
108
  t.teardown(app.close.bind(app))
@@ -109,13 +115,13 @@ test('trust proxy function', (t) => {
109
115
  })
110
116
 
111
117
  test('trust proxy number', (t) => {
112
- t.plan(4)
118
+ t.plan(10)
113
119
  const app = fastify({
114
120
  trustProxy: 1
115
121
  })
116
122
  app.get('/trustproxynumber', function (req, reply) {
117
- testRequestValues(t, req, { ip: '1.1.1.1', ips: [localhost, '1.1.1.1'] })
118
- reply.code(200).send({ ip: req.ip, hostname: req.hostname })
123
+ testRequestValues(t, req, { ip: '1.1.1.1', ips: [localhost, '1.1.1.1'], host: 'example.com', port: app.server.address().port })
124
+ reply.code(200).send({ ip: req.ip, host: req.host })
119
125
  })
120
126
 
121
127
  t.teardown(app.close.bind(app))
@@ -128,13 +134,13 @@ test('trust proxy number', (t) => {
128
134
  })
129
135
 
130
136
  test('trust proxy IP addresses', (t) => {
131
- t.plan(4)
137
+ t.plan(10)
132
138
  const app = fastify({
133
139
  trustProxy: `${localhost}, 2.2.2.2`
134
140
  })
135
141
  app.get('/trustproxyipaddrs', function (req, reply) {
136
- testRequestValues(t, req, { ip: '1.1.1.1', ips: [localhost, '1.1.1.1'] })
137
- reply.code(200).send({ ip: req.ip, hostname: req.hostname })
142
+ testRequestValues(t, req, { ip: '1.1.1.1', ips: [localhost, '1.1.1.1'], host: 'example.com', port: app.server.address().port })
143
+ reply.code(200).send({ ip: req.ip, host: req.host })
138
144
  })
139
145
 
140
146
  t.teardown(app.close.bind(app))
@@ -147,21 +153,21 @@ test('trust proxy IP addresses', (t) => {
147
153
  })
148
154
 
149
155
  test('trust proxy protocol', (t) => {
150
- t.plan(13)
156
+ t.plan(31)
151
157
  const app = fastify({
152
158
  trustProxy: true
153
159
  })
154
160
  app.get('/trustproxyprotocol', function (req, reply) {
155
- testRequestValues(t, req, { ip: '1.1.1.1', protocol: 'lorem' })
156
- reply.code(200).send({ ip: req.ip, hostname: req.hostname })
161
+ testRequestValues(t, req, { ip: '1.1.1.1', protocol: 'lorem', host: 'example.com', port: app.server.address().port })
162
+ reply.code(200).send({ ip: req.ip, host: req.host })
157
163
  })
158
164
  app.get('/trustproxynoprotocol', function (req, reply) {
159
- testRequestValues(t, req, { ip: '1.1.1.1', protocol: 'http' })
160
- reply.code(200).send({ ip: req.ip, hostname: req.hostname })
165
+ testRequestValues(t, req, { ip: '1.1.1.1', protocol: 'http', host: 'example.com', port: app.server.address().port })
166
+ reply.code(200).send({ ip: req.ip, host: req.host })
161
167
  })
162
168
  app.get('/trustproxyprotocols', function (req, reply) {
163
- testRequestValues(t, req, { ip: '1.1.1.1', protocol: 'dolor' })
164
- reply.code(200).send({ ip: req.ip, hostname: req.hostname })
169
+ testRequestValues(t, req, { ip: '1.1.1.1', protocol: 'dolor', host: 'example.com', port: app.server.address().port })
170
+ reply.code(200).send({ ip: req.ip, host: req.host })
165
171
  })
166
172
 
167
173
  t.teardown(app.close.bind(app))
@@ -59,8 +59,6 @@ expectAssignable<FastifyErrorConstructor>(errorCodes.FST_ERR_FORCE_CLOSE_CONNECT
59
59
  expectAssignable<FastifyErrorConstructor>(errorCodes.FST_ERR_DUPLICATED_ROUTE)
60
60
  expectAssignable<FastifyErrorConstructor>(errorCodes.FST_ERR_BAD_URL)
61
61
  expectAssignable<FastifyErrorConstructor>(errorCodes.FST_ERR_ASYNC_CONSTRAINT)
62
- expectAssignable<FastifyErrorConstructor>(errorCodes.FST_ERR_DEFAULT_ROUTE_INVALID_TYPE)
63
- expectAssignable<FastifyErrorConstructor>(errorCodes.FST_ERR_INVALID_URL)
64
62
  expectAssignable<FastifyErrorConstructor>(errorCodes.FST_ERR_ROUTE_OPTIONS_NOT_OBJ)
65
63
  expectAssignable<FastifyErrorConstructor>(errorCodes.FST_ERR_ROUTE_DUPLICATED_HANDLER)
66
64
  expectAssignable<FastifyErrorConstructor>(errorCodes.FST_ERR_ROUTE_HANDLER_NOT_FN)
@@ -11,30 +11,32 @@ import fastify, {
11
11
  RawRequestDefaultExpression,
12
12
  RouteGenericInterface,
13
13
  FastifyErrorCodes,
14
- FastifyError
14
+ FastifyError,
15
+ SafePromiseLike
15
16
  } from '../../fastify'
16
17
  import { ErrorObject as AjvErrorObject } from 'ajv'
17
18
  import * as http from 'http'
18
19
  import * as https from 'https'
19
20
  import * as http2 from 'http2'
20
21
  import { expectType, expectError, expectAssignable, expectNotAssignable } from 'tsd'
21
- import { FastifyLoggerInstance } from '../../types/logger'
22
22
  import { Socket } from 'net'
23
23
 
24
24
  // FastifyInstance
25
25
  // http server
26
- expectType<FastifyInstance<http.Server, http.IncomingMessage, http.ServerResponse> & PromiseLike<FastifyInstance<http.Server, http.IncomingMessage, http.ServerResponse>>>(fastify())
27
- expectType<FastifyInstance<http.Server, http.IncomingMessage, http.ServerResponse> & PromiseLike<FastifyInstance<http.Server, http.IncomingMessage, http.ServerResponse>>>(fastify({}))
28
- expectType<FastifyInstance<http.Server, http.IncomingMessage, http.ServerResponse> & PromiseLike<FastifyInstance<http.Server, http.IncomingMessage, http.ServerResponse>>>(fastify({ http: {} }))
26
+ expectError<FastifyInstance<http.Server, http.IncomingMessage, http.ServerResponse> & Promise<FastifyInstance<http.Server, http.IncomingMessage, http.ServerResponse>>>(fastify())
27
+ expectAssignable<FastifyInstance<http.Server, http.IncomingMessage, http.ServerResponse> & PromiseLike<FastifyInstance<http.Server, http.IncomingMessage, http.ServerResponse>>>(fastify())
28
+ expectType<FastifyInstance<http.Server, http.IncomingMessage, http.ServerResponse> & SafePromiseLike<FastifyInstance<http.Server, http.IncomingMessage, http.ServerResponse>>>(fastify())
29
+ expectType<FastifyInstance<http.Server, http.IncomingMessage, http.ServerResponse> & SafePromiseLike<FastifyInstance<http.Server, http.IncomingMessage, http.ServerResponse>>>(fastify({}))
30
+ expectType<FastifyInstance<http.Server, http.IncomingMessage, http.ServerResponse> & SafePromiseLike<FastifyInstance<http.Server, http.IncomingMessage, http.ServerResponse>>>(fastify({ http: {} }))
29
31
  // https server
30
- expectType<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse> & PromiseLike<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse>>>(fastify({ https: {} }))
31
- expectType<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse> & PromiseLike<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse>>>(fastify({ https: null }))
32
+ expectType<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse> & SafePromiseLike<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse>>>(fastify({ https: {} }))
33
+ expectType<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse> & SafePromiseLike<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse>>>(fastify({ https: null }))
32
34
  // http2 server
33
- expectType<FastifyInstance<http2.Http2Server, http2.Http2ServerRequest, http2.Http2ServerResponse> & PromiseLike<FastifyInstance<http2.Http2Server, http2.Http2ServerRequest, http2.Http2ServerResponse>>>(fastify({ http2: true, http2SessionTimeout: 1000 }))
34
- expectType<FastifyInstance<http2.Http2SecureServer, http2.Http2ServerRequest, http2.Http2ServerResponse> & PromiseLike<FastifyInstance<http2.Http2SecureServer, http2.Http2ServerRequest, http2.Http2ServerResponse>>>(fastify({ http2: true, https: {}, http2SessionTimeout: 1000 }))
35
+ expectType<FastifyInstance<http2.Http2Server, http2.Http2ServerRequest, http2.Http2ServerResponse> & SafePromiseLike<FastifyInstance<http2.Http2Server, http2.Http2ServerRequest, http2.Http2ServerResponse>>>(fastify({ http2: true, http2SessionTimeout: 1000 }))
36
+ expectType<FastifyInstance<http2.Http2SecureServer, http2.Http2ServerRequest, http2.Http2ServerResponse> & SafePromiseLike<FastifyInstance<http2.Http2SecureServer, http2.Http2ServerRequest, http2.Http2ServerResponse>>>(fastify({ http2: true, https: {}, http2SessionTimeout: 1000 }))
35
37
  expectType<LightMyRequestChain>(fastify({ http2: true, https: {} }).inject())
36
- expectType<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse> & PromiseLike<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse>>>(fastify({ schemaController: {} }))
37
- expectType<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse> & PromiseLike<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse>>>(
38
+ expectType<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse> & SafePromiseLike<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse>>>(fastify({ schemaController: {} }))
39
+ expectType<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse> & SafePromiseLike<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse>>>(
38
40
  fastify({
39
41
  schemaController: {
40
42
  compilersFactory: {}
@@ -92,7 +94,7 @@ expectAssignable<FastifyInstance<http.Server, http.IncomingMessage, http.ServerR
92
94
  method: 'GET',
93
95
  url: '/',
94
96
  version: '1.0.0',
95
- hostname: 'localhost',
97
+ host: 'localhost',
96
98
  remoteAddress: '127.0.0.1',
97
99
  remotePort: 3000
98
100
  }
@@ -14,6 +14,7 @@ import fastify, {
14
14
  RegisterOptions,
15
15
  RouteOptions,
16
16
  // preClose hook types should be exported correctly https://github.com/fastify/fastify/pull/5335
17
+ /* eslint-disable @typescript-eslint/no-unused-vars */
17
18
  preCloseAsyncHookHandler,
18
19
  preCloseHookHandler
19
20
  } from '../../fastify'
@@ -1 +1,2 @@
1
+ /* eslint-disable @typescript-eslint/no-unused-vars */
1
2
  import { FastifyListenOptions, FastifyLogFn } from '../../fastify'
@@ -1,4 +1,4 @@
1
- import { expectAssignable, expectDeprecated, expectError, expectNotDeprecated, expectType } from 'tsd'
1
+ import { expectAssignable, expectError, expectNotDeprecated, expectType } from 'tsd'
2
2
  import fastify, {
3
3
  FastifyBaseLogger,
4
4
  FastifyBodyParser,
@@ -12,7 +12,6 @@ import fastify, {
12
12
  import { HookHandlerDoneFunction } from '../../types/hooks'
13
13
  import { FastifyReply } from '../../types/reply'
14
14
  import { FastifyRequest } from '../../types/request'
15
- import { DefaultRoute } from '../../types/route'
16
15
  import { FastifySchemaControllerOptions, FastifySchemaCompiler, FastifySerializerCompiler } from '../../types/schema'
17
16
  import { AddressInfo } from 'net'
18
17
  import { Bindings, ChildLoggerOptions } from '../../types/logger'
@@ -194,48 +193,6 @@ function invalidSchemaErrorFormatter (err: Error) {
194
193
  }
195
194
  expectError(server.setSchemaErrorFormatter(invalidSchemaErrorFormatter))
196
195
 
197
- // test listen method callback
198
- expectAssignable<void>(server.listen(3000, '', 0, (err, address) => {
199
- expectType<Error | null>(err)
200
- }))
201
- expectAssignable<void>(server.listen('3000', '', 0, (err, address) => {
202
- expectType<Error | null>(err)
203
- }))
204
- expectAssignable<void>(server.listen(3000, '', (err, address) => {
205
- expectType<Error | null>(err)
206
- }))
207
- expectAssignable<void>(server.listen('3000', '', (err, address) => {
208
- expectType<Error | null>(err)
209
- }))
210
- expectAssignable<void>(server.listen(3000, (err, address) => {
211
- expectType<Error | null>(err)
212
- }))
213
- expectAssignable<void>(server.listen('3000', (err, address) => {
214
- expectType<Error | null>(err)
215
- }))
216
-
217
- // test listen method callback types
218
- expectAssignable<void>(server.listen('3000', (err, address) => {
219
- expectAssignable<Error|null>(err)
220
- expectAssignable<string>(address)
221
- }))
222
-
223
- // test listen method promise
224
- expectAssignable<PromiseLike<string>>(server.listen(3000))
225
- expectAssignable<PromiseLike<string>>(server.listen('3000'))
226
- expectAssignable<PromiseLike<string>>(server.listen(3000, '', 0))
227
- expectAssignable<PromiseLike<string>>(server.listen('3000', '', 0))
228
- expectAssignable<PromiseLike<string>>(server.listen(3000, ''))
229
- expectAssignable<PromiseLike<string>>(server.listen('3000', ''))
230
-
231
- // Test variadic listen signatures Typescript deprecation
232
- expectDeprecated(server.listen(3000))
233
- expectDeprecated(server.listen('3000'))
234
- expectDeprecated(server.listen(3000, '', 0))
235
- expectDeprecated(server.listen('3000', '', 0))
236
- expectDeprecated(server.listen(3000, ''))
237
- expectDeprecated(server.listen('3000', ''))
238
-
239
196
  // test listen opts objects
240
197
  expectAssignable<PromiseLike<string>>(server.listen())
241
198
  expectAssignable<PromiseLike<string>>(server.listen({ port: 3000 }))
@@ -279,6 +236,12 @@ expectAssignable<FastifyInstance>(server.ready())
279
236
  expectAssignable<FastifyInstance>(server.ready((err) => {
280
237
  expectType<Error | null>(err)
281
238
  }))
239
+ expectAssignable<FastifyInstance>(server.ready(async (err) => {
240
+ expectType<Error | null>(err)
241
+ }))
242
+ expectAssignable<Parameters<typeof server.ready>[0]>(async (err) => {
243
+ expectType<Error | null>(err)
244
+ })
282
245
 
283
246
  expectAssignable<void>(server.routing({} as RawRequestDefaultExpression, {} as RawReplyDefaultExpression))
284
247
 
@@ -453,7 +416,7 @@ server.decorate('typedTestProperty', {
453
416
  })
454
417
  server.decorate('typedTestProperty')
455
418
  server.decorate('typedTestProperty', null, ['foo'])
456
- server.decorate('typedTestProperty', null)
419
+ expectError(server.decorate('typedTestProperty', null))
457
420
  expectError(server.decorate('typedTestProperty', 'foo'))
458
421
  expectError(server.decorate('typedTestProperty', {
459
422
  getter () {
@@ -493,7 +456,7 @@ server.decorateRequest('typedTestRequestProperty', {
493
456
  })
494
457
  server.decorateRequest('typedTestRequestProperty')
495
458
  server.decorateRequest('typedTestRequestProperty', null, ['foo'])
496
- server.decorateRequest('typedTestRequestProperty', null)
459
+ expectError(server.decorateRequest('typedTestRequestProperty', null))
497
460
  expectError(server.decorateRequest('typedTestRequestProperty', 'foo'))
498
461
  expectError(server.decorateRequest('typedTestRequestProperty', {
499
462
  getter () {
@@ -533,7 +496,7 @@ server.decorateReply('typedTestReplyProperty', {
533
496
  })
534
497
  server.decorateReply('typedTestReplyProperty')
535
498
  server.decorateReply('typedTestReplyProperty', null, ['foo'])
536
- server.decorateReply('typedTestReplyProperty', null)
499
+ expectError(server.decorateReply('typedTestReplyProperty', null))
537
500
  expectError(server.decorateReply('typedTestReplyProperty', 'foo'))
538
501
  expectError(server.decorateReply('typedTestReplyProperty', {
539
502
  getter () {
@@ -570,9 +533,5 @@ const versionConstraintStrategy = {
570
533
  expectType<void>(server.addConstraintStrategy(versionConstraintStrategy))
571
534
  expectType<boolean>(server.hasConstraintStrategy(versionConstraintStrategy.name))
572
535
 
573
- expectType<boolean>(server.hasPlugin(''))
574
-
575
- expectAssignable<DefaultRoute<RawRequestDefaultExpression, RawReplyDefaultExpression>>(server.getDefaultRoute())
576
-
577
536
  expectType<FastifySchemaCompiler<any> | undefined>(server.validatorCompiler)
578
537
  expectType<FastifySerializerCompiler<any> | undefined>(server.serializerCompiler)
@@ -5,8 +5,7 @@ import fastify, {
5
5
  FastifyLoggerInstance,
6
6
  FastifyRequest,
7
7
  FastifyReply,
8
- FastifyBaseLogger,
9
- FastifyInstance
8
+ FastifyBaseLogger
10
9
  } from '../../fastify'
11
10
  import { Server, IncomingMessage, ServerResponse } from 'http'
12
11
  import * as fs from 'fs'
@@ -121,14 +120,52 @@ const serverAutoInferringTypes = fastify({
121
120
 
122
121
  expectType<FastifyBaseLogger>(serverAutoInferringTypes.log)
123
122
 
124
- const serverWithAutoInferredPino = fastify({
125
- logger: P({
123
+ const serverWithLoggerInstance = fastify({
124
+ loggerInstance: P({
126
125
  level: 'info',
127
126
  redact: ['x-userinfo']
128
127
  })
129
128
  })
130
129
 
131
- expectType<P.Logger>(serverWithAutoInferredPino.log)
130
+ expectType<P.Logger>(serverWithLoggerInstance.log)
131
+
132
+ const serverWithPinoConfig = fastify({
133
+ logger: {
134
+ level: 'info',
135
+ serializers: {
136
+ req (IncomingMessage) {
137
+ expectType<FastifyRequest>(IncomingMessage)
138
+ return {
139
+ method: 'method',
140
+ url: 'url',
141
+ version: 'version',
142
+ host: 'hostname',
143
+ remoteAddress: 'remoteAddress',
144
+ remotePort: 80,
145
+ other: ''
146
+ }
147
+ },
148
+ res (ServerResponse) {
149
+ expectType<ResSerializerReply<Server, FastifyReply>>(ServerResponse)
150
+ expectAssignable<Partial<FastifyReply> & Pick<FastifyReply, 'statusCode'>>(ServerResponse)
151
+ expectNotAssignable<FastifyReply>(ServerResponse)
152
+ return {
153
+ statusCode: 'statusCode'
154
+ }
155
+ },
156
+ err (FastifyError) {
157
+ return {
158
+ other: '',
159
+ type: 'type',
160
+ message: 'msg',
161
+ stack: 'stack'
162
+ }
163
+ }
164
+ }
165
+ }
166
+ })
167
+
168
+ expectType<FastifyBaseLogger>(serverWithPinoConfig.log)
132
169
 
133
170
  const serverAutoInferredFileOption = fastify({
134
171
  logger: {
@@ -165,7 +202,7 @@ const serverAutoInferredSerializerObjectOption = fastify({
165
202
  method: 'method',
166
203
  url: 'url',
167
204
  version: 'version',
168
- hostname: 'hostname',
205
+ host: 'hostname',
169
206
  remoteAddress: 'remoteAddress',
170
207
  remotePort: 80,
171
208
  other: ''
@@ -1,4 +1,4 @@
1
- import fastify, { FastifyInstance, FastifyPluginOptions } from '../../fastify'
1
+ import fastify, { FastifyInstance, FastifyPluginOptions, SafePromiseLike } from '../../fastify'
2
2
  import * as http from 'http'
3
3
  import * as https from 'https'
4
4
  import { expectType, expectError, expectAssignable } from 'tsd'
@@ -42,7 +42,9 @@ expectAssignable<FastifyInstance>(fastify().register(async function (instance, o
42
42
  expectError(fastify().register(function (instance, opts, done) { }, { logLevel: '' })) // must use a valid logLevel
43
43
 
44
44
  const httpsServer = fastify({ https: {} })
45
- expectType<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse> & PromiseLike<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse>>>(httpsServer)
45
+ expectError<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse> & Promise<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse>>>(httpsServer)
46
+ expectAssignable<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse> & PromiseLike<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse>>>(httpsServer)
47
+ expectType<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse> & SafePromiseLike<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse>>>(httpsServer)
46
48
 
47
49
  // Chainable
48
50
  httpsServer
@@ -61,6 +63,7 @@ expectAssignable<PromiseLike<undefined>>(httpsServer.register(testPluginOptsWith
61
63
  expectAssignable<PromiseLike<undefined>>(httpsServer.register(testPluginOptsWithType, { prefix: '/test' }))
62
64
  expectAssignable<PromiseLike<undefined>>(httpsServer.register(testPluginOptsWithTypeAsync, { prefix: '/test' }))
63
65
 
66
+ /* eslint-disable @typescript-eslint/no-unused-vars */
64
67
  async function testAsync (): Promise<void> {
65
68
  await httpsServer
66
69
  .register(testPluginOpts)
@@ -72,7 +72,7 @@ expectAssignable<ServerWithHttp2>(serverWithHttp2.register(async (instance: Serv
72
72
  }))
73
73
 
74
74
  // With Type Provider
75
- type TestTypeProvider = { input: 'test', output: 'test' }
75
+ type TestTypeProvider = { schema: 'test', validator: 'test', serializer: 'test' }
76
76
  const serverWithTypeProvider = fastify().withTypeProvider<TestTypeProvider>()
77
77
  type ServerWithTypeProvider = FastifyInstance<Server, IncomingMessage, ServerResponse, FastifyLoggerInstance, TestTypeProvider>
78
78
  const testPluginWithTypeProvider: FastifyPluginCallback<TestOptions, RawServerDefault, TestTypeProvider> = function (instance, opts, done) { }
@@ -115,7 +115,7 @@ const customLogger = {
115
115
  silent: () => { }
116
116
  }
117
117
  const serverWithTypeProviderAndLogger = fastify({
118
- logger: customLogger
118
+ loggerInstance: customLogger
119
119
  }).withTypeProvider<TestTypeProvider>()
120
120
  type ServerWithTypeProviderAndLogger = FastifyInstance<Server, IncomingMessage, ServerResponse, typeof customLogger, TestTypeProvider>
121
121
  const testPluginWithTypeProviderAndLogger: FastifyPluginCallback<TestOptions, RawServerDefault, TestTypeProvider, typeof customLogger> = function (instance, opts, done) { }