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
@@ -12,7 +12,7 @@ const { on } = stream
12
12
  t.test('logger options', (t) => {
13
13
  t.setTimeout(60000)
14
14
 
15
- t.plan(12)
15
+ t.plan(16)
16
16
 
17
17
  t.test('logger can be silenced', (t) => {
18
18
  t.plan(17)
@@ -48,10 +48,10 @@ t.test('logger options', (t) => {
48
48
 
49
49
  const stream = split(JSON.parse)
50
50
 
51
- const logger = pino({ level: 'error' }, stream)
51
+ const loggerInstance = pino({ level: 'error' }, stream)
52
52
 
53
53
  const fastify = Fastify({
54
- logger
54
+ loggerInstance
55
55
  })
56
56
  t.teardown(fastify.close.bind(fastify))
57
57
 
@@ -94,10 +94,10 @@ t.test('logger options', (t) => {
94
94
 
95
95
  const stream = split(JSON.parse)
96
96
 
97
- const logger = pino({ level: 'error' }, stream)
97
+ const loggerInstance = pino({ level: 'error' }, stream)
98
98
 
99
99
  const fastify = Fastify({
100
- logger
100
+ loggerInstance
101
101
  })
102
102
  t.teardown(fastify.close.bind(fastify))
103
103
 
@@ -130,10 +130,10 @@ t.test('logger options', (t) => {
130
130
 
131
131
  const stream = split(JSON.parse)
132
132
 
133
- const logger = pino({ level: 'error' }, stream)
133
+ const loggerInstance = pino({ level: 'error' }, stream)
134
134
 
135
135
  const fastify = Fastify({
136
- logger
136
+ loggerInstance
137
137
  })
138
138
  t.teardown(fastify.close.bind(fastify))
139
139
 
@@ -193,9 +193,9 @@ t.test('logger options', (t) => {
193
193
 
194
194
  const stream = split(JSON.parse)
195
195
 
196
- const logger = pino({ level: 'info' }, stream)
196
+ const loggerInstance = pino({ level: 'info' }, stream)
197
197
  const fastify = Fastify({
198
- logger
198
+ loggerInstance
199
199
  })
200
200
  t.teardown(fastify.close.bind(fastify))
201
201
 
@@ -252,9 +252,9 @@ t.test('logger options', (t) => {
252
252
 
253
253
  const stream = split(JSON.parse)
254
254
 
255
- const logger = pino({ level: 'info' }, stream)
255
+ const loggerInstance = pino({ level: 'info' }, stream)
256
256
  const fastify = Fastify({
257
- logger
257
+ loggerInstance
258
258
  })
259
259
  t.teardown(fastify.close.bind(fastify))
260
260
 
@@ -290,9 +290,9 @@ t.test('logger options', (t) => {
290
290
 
291
291
  const stream = split(JSON.parse)
292
292
 
293
- const logger = pino({ level: 'info' }, stream)
293
+ const loggerInstance = pino({ level: 'info' }, stream)
294
294
  const fastify = Fastify({
295
- logger
295
+ loggerInstance
296
296
  })
297
297
  t.teardown(fastify.close.bind(fastify))
298
298
 
@@ -333,10 +333,10 @@ t.test('logger options', (t) => {
333
333
 
334
334
  const stream = split(JSON.parse)
335
335
 
336
- const logger = pino({ level: 'info' }, stream)
336
+ const loggerInstance = pino({ level: 'info' }, stream)
337
337
 
338
338
  const fastify = Fastify({
339
- logger
339
+ loggerInstance
340
340
  })
341
341
  t.teardown(fastify.close.bind(fastify))
342
342
 
@@ -369,10 +369,10 @@ t.test('logger options', (t) => {
369
369
 
370
370
  const stream = split(JSON.parse)
371
371
 
372
- const logger = pino({ level: 'warn' }, stream)
372
+ const loggerInstance = pino({ level: 'warn' }, stream)
373
373
 
374
374
  const fastify = Fastify({
375
- logger
375
+ loggerInstance
376
376
  })
377
377
  t.teardown(fastify.close.bind(fastify))
378
378
 
@@ -404,10 +404,10 @@ t.test('logger options', (t) => {
404
404
 
405
405
  const stream = split(JSON.parse)
406
406
 
407
- const logger = pino({ level: 'warn' }, stream)
407
+ const loggerInstance = pino({ level: 'warn' }, stream)
408
408
 
409
409
  const fastify = Fastify({
410
- logger
410
+ loggerInstance
411
411
  })
412
412
  t.teardown(fastify.close.bind(fastify))
413
413
 
@@ -444,10 +444,10 @@ t.test('logger options', (t) => {
444
444
 
445
445
  const stream = split(JSON.parse)
446
446
 
447
- const logger = pino({ level: 'error' }, stream)
447
+ const loggerInstance = pino({ level: 'error' }, stream)
448
448
 
449
449
  const fastify = Fastify({
450
- logger
450
+ loggerInstance
451
451
  })
452
452
  t.teardown(fastify.close.bind(fastify))
453
453
 
@@ -497,4 +497,85 @@ t.test('logger options', (t) => {
497
497
  t.equal(typeof fastify.log.trace, 'function')
498
498
  t.equal(typeof fastify.log.child, 'function')
499
499
  })
500
+
501
+ t.test('Should throw an error if logger instance is passed to `logger`', async (t) => {
502
+ t.plan(2)
503
+ const stream = split(JSON.parse)
504
+
505
+ const logger = require('pino')(stream)
506
+
507
+ try {
508
+ Fastify({ logger })
509
+ } catch (err) {
510
+ t.ok(err)
511
+ t.equal(err.code, 'FST_ERR_LOG_INVALID_LOGGER_CONFIG')
512
+ }
513
+ })
514
+
515
+ t.test('Should throw an error if options are passed to `loggerInstance`', async (t) => {
516
+ t.plan(2)
517
+ try {
518
+ Fastify({ loggerInstance: { level: 'log' } })
519
+ } catch (err) {
520
+ t.ok(err)
521
+ t.equal(err.code, 'FST_ERR_LOG_INVALID_LOGGER_INSTANCE')
522
+ }
523
+ })
524
+
525
+ t.test('If both `loggerInstance` and `logger` are provided, an error should be thrown', async (t) => {
526
+ t.plan(2)
527
+ const loggerInstanceStream = split(JSON.parse)
528
+ const loggerInstance = pino({ level: 'error' }, loggerInstanceStream)
529
+ const loggerStream = split(JSON.parse)
530
+ try {
531
+ Fastify({
532
+ logger: {
533
+ stream: loggerStream,
534
+ level: 'info'
535
+ },
536
+ loggerInstance
537
+ })
538
+ } catch (err) {
539
+ t.ok(err)
540
+ t.equal(err.code, 'FST_ERR_LOG_LOGGER_AND_LOGGER_INSTANCE_PROVIDED')
541
+ }
542
+ })
543
+
544
+ t.test('`logger` should take pino configuration and create a pino logger', async (t) => {
545
+ const lines = ['hello', 'world']
546
+ t.plan(2 * lines.length + 2)
547
+ const loggerStream = split(JSON.parse)
548
+ const fastify = Fastify({
549
+ logger: {
550
+ stream: loggerStream,
551
+ level: 'error'
552
+ }
553
+ })
554
+ t.teardown(fastify.close.bind(fastify))
555
+ fastify.get('/hello', (req, reply) => {
556
+ req.log.error('hello')
557
+ reply.code(404).send()
558
+ })
559
+
560
+ fastify.get('/world', (req, reply) => {
561
+ req.log.error('world')
562
+ reply.code(201).send()
563
+ })
564
+
565
+ await fastify.ready()
566
+ {
567
+ const response = await fastify.inject({ method: 'GET', url: '/hello' })
568
+ t.equal(response.statusCode, 404)
569
+ }
570
+ {
571
+ const response = await fastify.inject({ method: 'GET', url: '/world' })
572
+ t.equal(response.statusCode, 201)
573
+ }
574
+
575
+ for await (const [line] of on(loggerStream, 'data')) {
576
+ t.equal(line.level, 50)
577
+ t.equal(line.msg, lines.shift())
578
+ if (lines.length === 0) break
579
+ }
580
+ })
500
581
  })
@@ -24,9 +24,9 @@ t.test('response serialization', (t) => {
24
24
 
25
25
  const stream = split(JSON.parse)
26
26
 
27
- const logger = pino({ level: 'info' }, stream)
27
+ const loggerInstance = pino({ level: 'info' }, stream)
28
28
  const fastify = Fastify({
29
- logger
29
+ loggerInstance
30
30
  })
31
31
  t.teardown(fastify.close.bind(fastify))
32
32
 
@@ -70,7 +70,7 @@ t.test('response serialization', (t) => {
70
70
 
71
71
  const stream = split(JSON.parse)
72
72
 
73
- const logger = pino({
73
+ const loggerInstance = pino({
74
74
  level: 'info',
75
75
  serializers: {
76
76
  test: value => 'X' + value,
@@ -78,7 +78,7 @@ t.test('response serialization', (t) => {
78
78
  }
79
79
  }, stream)
80
80
  const fastify = Fastify({
81
- logger
81
+ loggerInstance
82
82
  })
83
83
  t.teardown(fastify.close.bind(fastify))
84
84
 
@@ -115,14 +115,14 @@ t.test('response serialization', (t) => {
115
115
 
116
116
  const stream = split(JSON.parse)
117
117
 
118
- const logger = pino({
118
+ const loggerInstance = pino({
119
119
  level: 'info',
120
120
  serializers: {
121
121
  test: value => 'X' + value
122
122
  }
123
123
  }, stream)
124
124
 
125
- const fastify = Fastify({ logger })
125
+ const fastify = Fastify({ loggerInstance })
126
126
  t.teardown(fastify.close.bind(fastify))
127
127
 
128
128
  fastify.register(context1, { logSerializers: { test2: value => 'Y' + value } })
@@ -2,12 +2,9 @@
2
2
 
3
3
  const net = require('node:net')
4
4
  const { test } = require('tap')
5
- const semver = require('semver')
6
5
  const Fastify = require('../fastify')
7
6
 
8
- const skip = semver.lt(process.versions.node, '16.10.0')
9
-
10
- test('maxRequestsPerSocket on node version >= 16.10.0', { skip }, t => {
7
+ test('maxRequestsPerSocket', t => {
11
8
  t.plan(8)
12
9
 
13
10
  const fastify = Fastify({ maxRequestsPerSocket: 2 })
@@ -48,7 +45,7 @@ test('maxRequestsPerSocket on node version >= 16.10.0', { skip }, t => {
48
45
  })
49
46
  })
50
47
 
51
- test('maxRequestsPerSocket zero should behave same as null', { skip }, t => {
48
+ test('maxRequestsPerSocket zero should behave same as null', t => {
52
49
  t.plan(10)
53
50
 
54
51
  const fastify = Fastify({ maxRequestsPerSocket: 0 })
@@ -0,0 +1,24 @@
1
+ const http = require('http')
2
+ const { test } = require('tap')
3
+ const Fastify = require('../fastify')
4
+
5
+ test('missing method from http client', t => {
6
+ t.plan(2)
7
+ const fastify = Fastify()
8
+
9
+ fastify.listen({ port: 3000 }, (err) => {
10
+ t.error(err)
11
+
12
+ const port = fastify.server.address().port
13
+ const req = http.request({
14
+ port,
15
+ method: 'REBIND',
16
+ path: '/'
17
+ }, (res) => {
18
+ t.equal(res.statusCode, 404)
19
+ fastify.close()
20
+ })
21
+
22
+ req.end()
23
+ })
24
+ })
@@ -1,7 +1,5 @@
1
1
  'use strict'
2
2
 
3
- /* eslint no-prototype-builtins: 0 */
4
-
5
3
  const t = require('tap')
6
4
  const test = t.test
7
5
  const Fastify = require('../fastify')
@@ -117,8 +115,8 @@ test('fastify.register with fastify-plugin should provide access to external fas
117
115
 
118
116
  instance.register((i, o, n) => n(), p => {
119
117
  t.notOk(p === instance || p === fastify)
120
- t.ok(instance.isPrototypeOf(p))
121
- t.ok(fastify.isPrototypeOf(p))
118
+ t.ok(Object.prototype.isPrototypeOf.call(instance, p))
119
+ t.ok(Object.prototype.isPrototypeOf.call(fastify, p))
122
120
  t.ok(p.global)
123
121
  })
124
122
 
@@ -1,7 +1,5 @@
1
1
  'use strict'
2
2
 
3
- /* eslint no-prototype-builtins: 0 */
4
-
5
3
  const t = require('tap')
6
4
  const test = t.test
7
5
  const Fastify = require('../fastify')
@@ -1,7 +1,5 @@
1
1
  'use strict'
2
2
 
3
- /* eslint no-prototype-builtins: 0 */
4
-
5
3
  const t = require('tap')
6
4
  const test = t.test
7
5
  const Fastify = require('../fastify')
@@ -1,12 +1,11 @@
1
1
  'use strict'
2
2
 
3
- /* eslint no-prototype-builtins: 0 */
4
-
5
3
  const t = require('tap')
6
4
  const test = t.test
7
5
  const Fastify = require('../fastify')
8
6
  const fp = require('fastify-plugin')
9
7
  const fakeTimer = require('@sinonjs/fake-timers')
8
+ const { FST_ERR_PLUGIN_INVALID_ASYNC_HANDLER } = require('../lib/errors')
10
9
 
11
10
  test('pluginTimeout', t => {
12
11
  t.plan(5)
@@ -133,6 +132,9 @@ test('plugin metadata - version not matching requirement', t => {
133
132
  test('plugin metadata - version not matching requirement 2', t => {
134
133
  t.plan(2)
135
134
  const fastify = Fastify()
135
+ Object.defineProperty(fastify, 'version', {
136
+ value: '99.0.0'
137
+ })
136
138
 
137
139
  plugin[Symbol.for('skip-override')] = true
138
140
  plugin[Symbol.for('plugin-meta')] = {
@@ -198,36 +200,75 @@ test('plugin metadata - release candidate', t => {
198
200
  }
199
201
  })
200
202
 
201
- test('fastify-rc loads prior version plugins', t => {
202
- t.plan(2)
203
- const fastify = Fastify()
204
- Object.defineProperty(fastify, 'version', {
205
- value: '99.0.0-rc.1'
203
+ test('fastify-rc loads prior version plugins', async t => {
204
+ t.test('baseline (rc)', t => {
205
+ t.plan(2)
206
+
207
+ const fastify = Fastify()
208
+ Object.defineProperty(fastify, 'version', {
209
+ value: '99.0.0-rc.1'
210
+ })
211
+
212
+ plugin[Symbol.for('plugin-meta')] = {
213
+ name: 'plugin',
214
+ fastify: '^98.1.0'
215
+ }
216
+ plugin2[Symbol.for('plugin-meta')] = {
217
+ name: 'plugin2',
218
+ fastify: '98.x'
219
+ }
220
+
221
+ fastify.register(plugin)
222
+
223
+ fastify.ready((err) => {
224
+ t.error(err)
225
+ t.pass('everything right')
226
+ })
227
+
228
+ function plugin (instance, opts, done) {
229
+ done()
230
+ }
231
+
232
+ function plugin2 (instance, opts, done) {
233
+ done()
234
+ }
206
235
  })
207
236
 
208
- plugin[Symbol.for('plugin-meta')] = {
209
- name: 'plugin',
210
- fastify: '^98.1.0'
211
- }
212
- plugin2[Symbol.for('plugin-meta')] = {
213
- name: 'plugin2',
214
- fastify: '98.x'
215
- }
237
+ t.test('pre', t => {
238
+ t.plan(2)
216
239
 
217
- fastify.register(plugin)
240
+ const fastify = Fastify()
241
+ Object.defineProperty(fastify, 'version', { value: '99.0.0-pre.1' })
218
242
 
219
- fastify.ready((err) => {
220
- t.error(err)
221
- t.pass('everything right')
243
+ plugin[Symbol.for('plugin-meta')] = { name: 'plugin', fastify: '^98.x' }
244
+
245
+ fastify.register(plugin)
246
+
247
+ fastify.ready((err) => {
248
+ t.error(err)
249
+ t.pass()
250
+ })
251
+
252
+ function plugin (instance, opts, done) { done() }
222
253
  })
223
254
 
224
- function plugin (instance, opts, done) {
225
- done()
226
- }
255
+ t.test('alpha', t => {
256
+ t.plan(2)
227
257
 
228
- function plugin2 (instance, opts, done) {
229
- done()
230
- }
258
+ const fastify = Fastify()
259
+ Object.defineProperty(fastify, 'version', { value: '99.0.0-pre.1' })
260
+
261
+ plugin[Symbol.for('plugin-meta')] = { name: 'plugin', fastify: '^98.x' }
262
+
263
+ fastify.register(plugin)
264
+
265
+ fastify.ready((err) => {
266
+ t.error(err)
267
+ t.pass()
268
+ })
269
+
270
+ function plugin (instance, opts, done) { done() }
271
+ })
231
272
  })
232
273
 
233
274
  test('hasPlugin method exists as a function', t => {
@@ -415,49 +456,44 @@ test('hasPlugin returns true when using encapsulation', async t => {
415
456
  await fastify.ready()
416
457
  })
417
458
 
418
- test('registering plugins with mixed style should return a warning', async t => {
419
- t.plan(12)
420
-
421
- const pluginNames = ['error-plugin', 'anonymous', 'anotherPlugin', 'anotherPluginNamed']
422
-
423
- const oldWarnings = process.listeners('warning')
424
- process.removeAllListeners('warning')
425
- process.on('warning', onWarning)
426
- function onWarning (warning) {
427
- t.match(warning.message, new RegExp(`.*${pluginNames.shift()} plugin being registered mixes async and callback styles.*`))
428
- t.equal(warning.name, 'FastifyWarning')
429
- t.equal(warning.code, 'FSTWRN002')
430
- }
431
- t.teardown(() => {
432
- process.removeListener('warning', onWarning)
433
- for (const warning of oldWarnings) {
434
- process.on('warning', warning)
435
- }
436
- })
459
+ test('registering anonymous plugin with mixed style should throw', async t => {
460
+ t.plan(2)
437
461
 
438
462
  const fastify = Fastify()
439
463
 
440
- const pluginName = 'error-plugin'
441
- const errorPlugin = async (app, opts, done) => {
464
+ const anonymousPlugin = async (app, opts, done) => {
442
465
  done()
443
466
  }
444
467
 
445
- const namedPlugin = fp(errorPlugin, { name: pluginName })
468
+ fastify.register(anonymousPlugin)
446
469
 
447
- async function anotherPlugin (app, opts, done) {
448
- done()
470
+ try {
471
+ await fastify.ready()
472
+ t.fail('should throw')
473
+ } catch (error) {
474
+ t.type(error, FST_ERR_PLUGIN_INVALID_ASYNC_HANDLER)
475
+ t.equal(error.message, 'The anonymousPlugin plugin being registered mixes async and callback styles. Async plugin should not mix async and callback style.')
449
476
  }
477
+ })
478
+
479
+ test('registering named plugin with mixed style should throw', async t => {
480
+ t.plan(2)
481
+
482
+ const fastify = Fastify()
450
483
 
451
- const anotherPluginNamed = async function (app, opts, done) {
484
+ const pluginName = 'error-plugin'
485
+ const errorPlugin = async (app, opts, done) => {
452
486
  done()
453
487
  }
488
+ const namedPlugin = fp(errorPlugin, { name: pluginName })
454
489
 
455
490
  fastify.register(namedPlugin)
456
- fastify.register(async (app, opts, done) => {
457
- done()
458
- })
459
- fastify.register(anotherPlugin)
460
- fastify.register(anotherPluginNamed)
461
491
 
462
- await fastify.ready()
492
+ try {
493
+ await fastify.ready()
494
+ t.fail('should throw')
495
+ } catch (error) {
496
+ t.type(error, FST_ERR_PLUGIN_INVALID_ASYNC_HANDLER)
497
+ t.equal(error.message, 'The error-plugin plugin being registered mixes async and callback styles. Async plugin should not mix async and callback style.')
498
+ }
463
499
  })
@@ -1,7 +1,5 @@
1
1
  'use strict'
2
2
 
3
- /* eslint no-prototype-builtins: 0 */
4
-
5
3
  const t = require('tap')
6
4
  const test = t.test
7
5
  const sget = require('simple-get').concat
@@ -14,7 +12,7 @@ test('register', t => {
14
12
 
15
13
  fastify.register(function (instance, opts, done) {
16
14
  t.not(instance, fastify)
17
- t.ok(fastify.isPrototypeOf(instance))
15
+ t.ok(Object.prototype.isPrototypeOf.call(fastify, instance))
18
16
 
19
17
  t.equal(typeof opts, 'object')
20
18
  t.equal(typeof done, 'function')
@@ -27,7 +25,7 @@ test('register', t => {
27
25
 
28
26
  fastify.register(function (instance, opts, done) {
29
27
  t.not(instance, fastify)
30
- t.ok(fastify.isPrototypeOf(instance))
28
+ t.ok(Object.prototype.isPrototypeOf.call(fastify, instance))
31
29
 
32
30
  t.equal(typeof opts, 'object')
33
31
  t.equal(typeof done, 'function')
@@ -0,0 +1,98 @@
1
+ 'use strict'
2
+
3
+ const Fastify = require('..')
4
+ const { test } = require('tap')
5
+ const http = require('http')
6
+ const http2 = require('http2')
7
+
8
+ const testResBody = 'Hello, world!'
9
+
10
+ test('sends early hints', (t) => {
11
+ t.plan(6)
12
+
13
+ const fastify = Fastify({
14
+ logger: false
15
+ })
16
+
17
+ fastify.get('/', async (request, reply) => {
18
+ reply.writeEarlyHints({
19
+ link: '</styles.css>; rel=preload; as=style'
20
+ }, () => {
21
+ t.pass('callback called')
22
+ })
23
+
24
+ return testResBody
25
+ })
26
+
27
+ fastify.listen({ port: 0 }, (err, address) => {
28
+ t.error(err)
29
+
30
+ const req = http.get(address)
31
+
32
+ req.on('information', (res) => {
33
+ t.equal(res.statusCode, 103)
34
+ t.equal(res.headers.link, '</styles.css>; rel=preload; as=style')
35
+ })
36
+
37
+ req.on('response', (res) => {
38
+ t.equal(res.statusCode, 200)
39
+
40
+ let data = ''
41
+ res.on('data', (chunk) => {
42
+ data += chunk
43
+ })
44
+
45
+ res.on('end', () => {
46
+ t.equal(data, testResBody)
47
+ fastify.close(t.end)
48
+ })
49
+ })
50
+ })
51
+ })
52
+
53
+ test('sends early hints (http2)', (t) => {
54
+ t.plan(6)
55
+
56
+ const fastify = Fastify({
57
+ http2: true,
58
+ logger: false
59
+ })
60
+
61
+ fastify.get('/', async (request, reply) => {
62
+ reply.writeEarlyHints({
63
+ link: '</styles.css>; rel=preload; as=style'
64
+ })
65
+
66
+ return testResBody
67
+ })
68
+
69
+ fastify.listen({ port: 0 }, (err, address) => {
70
+ t.error(err)
71
+
72
+ const client = http2.connect(address)
73
+ const req = client.request()
74
+
75
+ req.on('headers', (headers) => {
76
+ t.not(headers, undefined)
77
+ t.equal(headers[':status'], 103)
78
+ t.equal(headers.link, '</styles.css>; rel=preload; as=style')
79
+ })
80
+
81
+ req.on('response', (headers) => {
82
+ t.equal(headers[':status'], 200)
83
+ })
84
+
85
+ let data = ''
86
+ req.on('data', (chunk) => {
87
+ data += chunk
88
+ })
89
+
90
+ req.on('end', () => {
91
+ t.equal(data, testResBody)
92
+ client.close()
93
+ fastify.close(t.end)
94
+ })
95
+
96
+ req.end()
97
+ })
98
+ })
@@ -603,7 +603,6 @@ test('error handler is triggered when a string is thrown from sync handler', t =
603
603
  const payload = 'error'
604
604
 
605
605
  fastify.get('/', function (req, reply) {
606
- // eslint-disable-next-line no-throw-literal
607
606
  throw throwable
608
607
  })
609
608
 
@@ -666,7 +665,6 @@ test('should trigger error handlers if a sync route throws any non-error object'
666
665
  const payload = 'error'
667
666
 
668
667
  fastify.get('/', function async (req, reply) {
669
- // eslint-disable-next-line no-throw-literal
670
668
  throw throwable
671
669
  })
672
670
 
@@ -255,7 +255,6 @@ function testBeforeHandlerHook (hook) {
255
255
 
256
256
  fastify.get('/', {
257
257
  [hook]: async () => {
258
- // eslint-disable-next-line no-throw-literal
259
258
  throw myError
260
259
  }
261
260
  }, (req, reply) => {