fastify 4.27.0 → 5.0.0-alpha.2

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 (328) hide show
  1. package/.markdownlint-cli2.yaml +1 -1
  2. package/.tap/processinfo/09002e93-10ad-430c-bc86-c0576928b0ed.json +241 -0
  3. package/.tap/processinfo/ee66c5ab-635d-48b5-8be6-3dc3ceea5bfc.json +268 -0
  4. package/.tap/test-results/test/404s.test.js.tap +623 -0
  5. package/.tap/test-results/test/500s.test.js.tap +64 -0
  6. package/.tap/test-results/test/allowUnsafeRegex.test.js.tap +36 -0
  7. package/.tap/test-results/test/als.test.js.tap +15 -0
  8. package/.tap/test-results/test/async-await.test.js.tap +184 -0
  9. package/.tap/test-results/test/async-dispose.test.js.tap +8 -0
  10. package/.tap/test-results/test/async_hooks.test.js.tap +10 -0
  11. package/.tap/test-results/test/bodyLimit.test.js.tap +48 -0
  12. package/.tap/test-results/test/buffer.test.js.tap +20 -0
  13. package/.tap/test-results/test/build/error-serializer.test.js.tap +12 -0
  14. package/.tap/test-results/test/build/version.test.js.tap +7 -0
  15. package/.tap/test-results/test/case-insensitive.test.js.tap +36 -0
  16. package/.tap/test-results/test/chainable.test.js.tap +17 -0
  17. package/.tap/test-results/test/check.test.js.tap +10 -0
  18. package/.tap/test-results/test/childLoggerFactory.test.js.tap +23 -0
  19. package/.tap/test-results/test/client-timeout.test.js.tap +7 -0
  20. package/.tap/test-results/test/close-pipelining.test.js.tap +15 -0
  21. package/.tap/test-results/test/close.test.js.tap +172 -0
  22. package/.tap/test-results/test/connectionTimeout.test.js.tap +12 -0
  23. package/.tap/test-results/test/constrained-routes.test.js.tap +173 -0
  24. package/.tap/test-results/test/content-length.test.js.tap +46 -0
  25. package/.tap/test-results/test/content-parser.test.js.tap +266 -0
  26. package/.tap/test-results/test/content-type.test.js.tap +14 -0
  27. package/.tap/test-results/test/context-config.test.js.tap +41 -0
  28. package/.tap/test-results/test/copy.test.js.tap +14 -0
  29. package/.tap/test-results/test/custom-http-server.test.js.tap +30 -0
  30. package/.tap/test-results/test/custom-parser-async.test.js.tap +21 -0
  31. package/.tap/test-results/test/custom-parser.0.test.js.tap +199 -0
  32. package/.tap/test-results/test/custom-parser.1.test.js.tap +90 -0
  33. package/.tap/test-results/test/custom-parser.2.test.js.tap +22 -0
  34. package/.tap/test-results/test/custom-parser.3.test.js.tap +53 -0
  35. package/.tap/test-results/test/custom-parser.4.test.js.tap +45 -0
  36. package/.tap/test-results/test/custom-parser.5.test.js.tap +41 -0
  37. package/.tap/test-results/test/custom-querystring-parser.test.js.tap +46 -0
  38. package/.tap/test-results/test/decorator.test.js.tap +465 -0
  39. package/.tap/test-results/test/delete.test.js.tap +110 -0
  40. package/.tap/test-results/test/diagnostics-channel/404.test.js.tap +15 -0
  41. package/.tap/test-results/test/diagnostics-channel/async-delay-request.test.js.tap +25 -0
  42. package/.tap/test-results/test/diagnostics-channel/async-request.test.js.tap +24 -0
  43. package/.tap/test-results/test/diagnostics-channel/error-before-handler.test.js.tap +9 -0
  44. package/.tap/test-results/test/diagnostics-channel/error-request.test.js.tap +20 -0
  45. package/.tap/test-results/test/diagnostics-channel/error-status.test.js.tap +10 -0
  46. package/.tap/test-results/test/diagnostics-channel/init.test.js.tap +14 -0
  47. package/.tap/test-results/test/diagnostics-channel/sync-delay-request.test.js.tap +16 -0
  48. package/.tap/test-results/test/diagnostics-channel/sync-request-reply.test.js.tap +16 -0
  49. package/.tap/test-results/test/diagnostics-channel/sync-request.test.js.tap +19 -0
  50. package/.tap/test-results/test/encapsulated-child-logger-factory.test.js.tap +18 -0
  51. package/.tap/test-results/test/encapsulated-error-handler.test.js.tap +243 -0
  52. package/.tap/test-results/test/esm/errorCodes.test.mjs.tap +9 -0
  53. package/.tap/test-results/test/esm/esm.test.mjs.tap +8 -0
  54. package/.tap/test-results/test/esm/index.test.js.tap +8 -0
  55. package/.tap/test-results/test/fastify-instance.test.js.tap +114 -0
  56. package/.tap/test-results/test/findRoute.test.js.tap +37 -0
  57. package/.tap/test-results/test/fluent-schema.test.js.tap +36 -0
  58. package/.tap/test-results/test/genReqId.test.js.tap +106 -0
  59. package/.tap/test-results/test/get.test.js.tap +151 -0
  60. package/.tap/test-results/test/handler-context.test.js.tap +19 -0
  61. package/.tap/test-results/test/has-route.test.js.tap +30 -0
  62. package/.tap/test-results/test/head.test.js.tap +130 -0
  63. package/.tap/test-results/test/header-overflow.test.js.tap +16 -0
  64. package/.tap/test-results/test/hooks-async.test.js.tap +286 -0
  65. package/.tap/test-results/test/hooks.on-listen.test.js.tap +311 -0
  66. package/.tap/test-results/test/hooks.on-ready.test.js.tap +151 -0
  67. package/.tap/test-results/test/hooks.test.js.tap +966 -0
  68. package/.tap/test-results/test/http2/closing.test.js.tap +35 -0
  69. package/.tap/test-results/test/http2/constraint.test.js.tap +32 -0
  70. package/.tap/test-results/test/http2/head.test.js.tap +9 -0
  71. package/.tap/test-results/test/http2/missing-http2-module.test.js.tap +8 -0
  72. package/.tap/test-results/test/http2/plain.test.js.tap +22 -0
  73. package/.tap/test-results/test/http2/secure-with-fallback.test.js.tap +40 -0
  74. package/.tap/test-results/test/http2/secure.test.js.tap +27 -0
  75. package/.tap/test-results/test/http2/unknown-http-method.test.js.tap +9 -0
  76. package/.tap/test-results/test/https/custom-https-server.test.js.tap +10 -0
  77. package/.tap/test-results/test/https/https.test.js.tap +45 -0
  78. package/.tap/test-results/test/imports.test.js.tap +14 -0
  79. package/.tap/test-results/test/inject.test.js.tap +165 -0
  80. package/.tap/test-results/test/internals/all.test.js.tap +42 -0
  81. package/.tap/test-results/test/internals/contentTypeParser.test.js.tap +14 -0
  82. package/.tap/test-results/test/internals/context.test.js.tap +14 -0
  83. package/.tap/test-results/test/internals/decorator.test.js.tap +51 -0
  84. package/.tap/test-results/test/internals/errors.test.js.tap +1212 -0
  85. package/.tap/test-results/test/internals/handleRequest.test.js.tap +69 -0
  86. package/.tap/test-results/test/internals/hookRunner.test.js.tap +143 -0
  87. package/.tap/test-results/test/internals/hooks.test.js.tap +45 -0
  88. package/.tap/test-results/test/internals/initialConfig.test.js.tap +125 -0
  89. package/.tap/test-results/test/internals/logger.test.js.tap +71 -0
  90. package/.tap/test-results/test/internals/plugin.test.js.tap +48 -0
  91. package/.tap/test-results/test/internals/reply-serialize.test.js.tap +166 -0
  92. package/.tap/test-results/test/internals/reply.test.js.tap +688 -0
  93. package/.tap/test-results/test/internals/reqIdGenFactory.test.js.tap +74 -0
  94. package/.tap/test-results/test/internals/request-validate.test.js.tap +384 -0
  95. package/.tap/test-results/test/internals/request.test.js.tap +163 -0
  96. package/.tap/test-results/test/internals/server.test.js.tap +30 -0
  97. package/.tap/test-results/test/internals/validation.test.js.tap +121 -0
  98. package/.tap/test-results/test/keepAliveTimeout.test.js.tap +12 -0
  99. package/.tap/test-results/test/listen.1.test.js.tap +31 -0
  100. package/.tap/test-results/test/listen.2.test.js.tap +46 -0
  101. package/.tap/test-results/test/listen.3.test.js.tap +25 -0
  102. package/.tap/test-results/test/listen.4.test.js.tap +51 -0
  103. package/.tap/test-results/test/lock.test.js.tap +29 -0
  104. package/.tap/test-results/test/logger/instantiation.test.js.tap +92 -0
  105. package/.tap/test-results/test/logger/logging.test.js.tap +117 -0
  106. package/.tap/test-results/test/logger/options.test.js.tap +165 -0
  107. package/.tap/test-results/test/logger/request.test.js.tap +82 -0
  108. package/.tap/test-results/test/logger/response.test.js.tap +38 -0
  109. package/.tap/test-results/test/maxRequestsPerSocket.test.js.tap +44 -0
  110. package/.tap/test-results/test/method-missing.test.js.tap +8 -0
  111. package/.tap/test-results/test/middleware.test.js.tap +17 -0
  112. package/.tap/test-results/test/mkcalendar.test.js.tap +43 -0
  113. package/.tap/test-results/test/mkcol.test.js.tap +14 -0
  114. package/.tap/test-results/test/move.test.js.tap +15 -0
  115. package/.tap/test-results/test/noop-set.test.js.tap +8 -0
  116. package/.tap/test-results/test/nullable-validation.test.js.tap +36 -0
  117. package/.tap/test-results/test/options.error-handler.test.js.tap +186 -0
  118. package/.tap/test-results/test/options.test.js.tap +174 -0
  119. package/.tap/test-results/test/output-validation.test.js.tap +66 -0
  120. package/.tap/test-results/test/patch.error-handler.test.js.tap +206 -0
  121. package/.tap/test-results/test/patch.test.js.tap +182 -0
  122. package/.tap/test-results/test/plugin.1.test.js.tap +78 -0
  123. package/.tap/test-results/test/plugin.2.test.js.tap +102 -0
  124. package/.tap/test-results/test/plugin.3.test.js.tap +58 -0
  125. package/.tap/test-results/test/plugin.4.test.js.tap +164 -0
  126. package/.tap/test-results/test/post-empty-body.test.js.tap +8 -0
  127. package/.tap/test-results/test/pretty-print.test.js.tap +82 -0
  128. package/.tap/test-results/test/promises.test.js.tap +46 -0
  129. package/.tap/test-results/test/propfind.test.js.tap +43 -0
  130. package/.tap/test-results/test/proppatch.test.js.tap +29 -0
  131. package/.tap/test-results/test/proto-poisoning.test.js.tap +47 -0
  132. package/.tap/test-results/test/put.error-handler.test.js.tap +206 -0
  133. package/.tap/test-results/test/put.test.js.tap +182 -0
  134. package/.tap/test-results/test/register.test.js.tap +61 -0
  135. package/.tap/test-results/test/reply-code.test.js.tap +40 -0
  136. package/.tap/test-results/test/reply-earlyHints.test.js.tap +22 -0
  137. package/.tap/test-results/test/reply-error.test.js.tap +643 -0
  138. package/.tap/test-results/test/reply-trailers.test.js.tap +176 -0
  139. package/.tap/test-results/test/report.test.js.tap +43 -0
  140. package/.tap/test-results/test/request-error.test.js.tap +98 -0
  141. package/.tap/test-results/test/request-id.test.js.tap +38 -0
  142. package/.tap/test-results/test/request.deprecated.test.js.tap +13 -0
  143. package/.tap/test-results/test/requestTimeout.test.js.tap +21 -0
  144. package/.tap/test-results/test/route-hooks.test.js.tap +498 -0
  145. package/.tap/test-results/test/route-prefix.test.js.tap +195 -0
  146. package/.tap/test-results/test/route-shorthand.test.js.tap +190 -0
  147. package/.tap/test-results/test/route.1.test.js.tap +93 -0
  148. package/.tap/test-results/test/route.2.test.js.tap +28 -0
  149. package/.tap/test-results/test/route.3.test.js.tap +39 -0
  150. package/.tap/test-results/test/route.4.test.js.tap +32 -0
  151. package/.tap/test-results/test/route.5.test.js.tap +54 -0
  152. package/.tap/test-results/test/route.6.test.js.tap +81 -0
  153. package/.tap/test-results/test/route.7.test.js.tap +93 -0
  154. package/.tap/test-results/test/route.8.test.js.tap +38 -0
  155. package/.tap/test-results/test/router-options.test.js.tap +104 -0
  156. package/.tap/test-results/test/same-shape.test.js.tap +22 -0
  157. package/.tap/test-results/test/schema-examples.test.js.tap +85 -0
  158. package/.tap/test-results/test/schema-feature.test.js.tap +445 -0
  159. package/.tap/test-results/test/schema-serialization.test.js.tap +194 -0
  160. package/.tap/test-results/test/schema-special-usage.test.js.tap +186 -0
  161. package/.tap/test-results/test/schema-validation.test.js.tap +199 -0
  162. package/.tap/test-results/test/search.test.js.tap +77 -0
  163. package/.tap/test-results/test/serialize-response.test.js.tap +26 -0
  164. package/.tap/test-results/test/server.test.js.tap +65 -0
  165. package/.tap/test-results/test/set-error-handler.test.js.tap +7 -0
  166. package/.tap/test-results/test/skip-reply-send.test.js.tap +272 -0
  167. package/.tap/test-results/test/stream.1.test.js.tap +36 -0
  168. package/.tap/test-results/test/stream.2.test.js.tap +20 -0
  169. package/.tap/test-results/test/stream.3.test.js.tap +34 -0
  170. package/.tap/test-results/test/stream.4.test.js.tap +40 -0
  171. package/.tap/test-results/test/stream.5.test.js.tap +37 -0
  172. package/.tap/test-results/test/sync-routes.test.js.tap +19 -0
  173. package/.tap/test-results/test/throw.test.js.tap +116 -0
  174. package/.tap/test-results/test/trace.test.js.tap +7 -0
  175. package/.tap/test-results/test/trust-proxy.test.js.tap +109 -0
  176. package/.tap/test-results/test/type-provider.test.js.tap +12 -0
  177. package/.tap/test-results/test/unlock.test.js.tap +14 -0
  178. package/.tap/test-results/test/upgrade.test.js.tap +8 -0
  179. package/.tap/test-results/test/url-rewriting.test.js.tap +39 -0
  180. package/.tap/test-results/test/useSemicolonDelimiter.test.js.tap +33 -0
  181. package/.tap/test-results/test/validation-error-handling.test.js.tap +180 -0
  182. package/.tap/test-results/test/versioned-routes.test.js.tap +151 -0
  183. package/.tap/test-results/test/web-api.test.js.tap +51 -0
  184. package/.tap/test-results/test/wrapThenable.test.js.tap +11 -0
  185. package/.taprc +4 -8
  186. package/README.md +3 -6
  187. package/build/build-error-serializer.js +4 -1
  188. package/build/build-validation.js +5 -4
  189. package/docs/Guides/Database.md +1 -1
  190. package/docs/Guides/Delay-Accepting-Requests.md +3 -3
  191. package/docs/Guides/Ecosystem.md +2 -0
  192. package/docs/Guides/Migration-Guide-V5.md +20 -0
  193. package/docs/Guides/Write-Type-Provider.md +4 -2
  194. package/docs/Reference/ContentTypeParser.md +30 -1
  195. package/docs/Reference/Decorators.md +42 -16
  196. package/docs/Reference/Errors.md +10 -2
  197. package/docs/Reference/Hooks.md +48 -14
  198. package/docs/Reference/Logging.md +5 -5
  199. package/docs/Reference/Reply.md +29 -24
  200. package/docs/Reference/Request.md +5 -1
  201. package/docs/Reference/Routes.md +24 -28
  202. package/docs/Reference/Server.md +14 -53
  203. package/docs/Reference/Type-Providers.md +21 -26
  204. package/docs/Reference/TypeScript.md +46 -29
  205. package/docs/Reference/Warnings.md +2 -8
  206. package/eslint.config.js +27 -0
  207. package/examples/typescript-server.ts +14 -14
  208. package/fastify.d.ts +15 -14
  209. package/fastify.js +41 -15
  210. package/lib/configValidator.js +94 -76
  211. package/lib/contentTypeParser.js +54 -88
  212. package/lib/decorate.js +3 -7
  213. package/lib/error-serializer.js +77 -19
  214. package/lib/errors.js +31 -6
  215. package/lib/handleRequest.js +70 -39
  216. package/lib/httpMethods.js +34 -18
  217. package/lib/logger.js +24 -6
  218. package/lib/pluginUtils.js +5 -5
  219. package/lib/reply.js +16 -13
  220. package/lib/request.js +37 -19
  221. package/lib/route.js +7 -31
  222. package/lib/server.js +62 -123
  223. package/lib/warnings.js +28 -27
  224. package/lib/wrapThenable.js +46 -22
  225. package/package.json +38 -58
  226. package/test/404s.test.js +8 -12
  227. package/test/async-await.test.js +46 -2
  228. package/test/build/error-serializer.test.js +4 -2
  229. package/test/check.test.js +225 -0
  230. package/test/close-pipelining.test.js +2 -34
  231. package/test/close.test.js +1 -41
  232. package/test/content-parser.test.js +69 -117
  233. package/test/custom-parser.1.test.js +40 -1
  234. package/test/decorator-namespace.test._js_ +31 -0
  235. package/test/decorator.test.js +92 -43
  236. package/test/delete.test.js +21 -1
  237. package/test/diagnostics-channel/404.test.js +57 -0
  238. package/test/diagnostics-channel/async-delay-request.test.js +74 -0
  239. package/test/diagnostics-channel/async-request.test.js +72 -0
  240. package/test/diagnostics-channel/error-before-handler.test.js +36 -0
  241. package/test/diagnostics-channel/error-request.test.js +61 -0
  242. package/test/diagnostics-channel/error-status.test.js +39 -0
  243. package/test/{diagnostics-channel.test.js → diagnostics-channel/init.test.js} +6 -16
  244. package/test/diagnostics-channel/sync-delay-request.test.js +58 -0
  245. package/test/diagnostics-channel/sync-request-reply.test.js +58 -0
  246. package/test/diagnostics-channel/sync-request.test.js +61 -0
  247. package/test/encapsulated-error-handler.test.js +201 -14
  248. package/test/esm/index.test.js +2 -12
  249. package/test/findRoute.test.js +16 -0
  250. package/test/genReqId.test.js +9 -0
  251. package/test/get.test.js +28 -0
  252. package/test/has-route.test.js +18 -2
  253. package/test/helper.js +1 -5
  254. package/test/hooks.test.js +0 -4
  255. package/test/http2/constraint.test.js +22 -1
  256. package/test/http2/plain.test.js +21 -6
  257. package/test/http2/secure.test.js +12 -1
  258. package/test/https/https.test.js +57 -0
  259. package/test/inject.test.js +1 -2
  260. package/test/internals/decorator.test.js +0 -2
  261. package/test/internals/errors.test.js +57 -17
  262. package/test/internals/handleRequest.test.js +5 -1
  263. package/test/internals/initialConfig.test.js +5 -5
  264. package/test/internals/logger.test.js +31 -2
  265. package/test/internals/reply.test.js +38 -80
  266. package/test/internals/request.test.js +13 -11
  267. package/test/listen.1.test.js +5 -15
  268. package/test/listen.5.test.js +88 -0
  269. package/test/logger/instantiation.test.js +8 -8
  270. package/test/logger/logging.test.js +4 -4
  271. package/test/logger/options.test.js +102 -21
  272. package/test/logger/response.test.js +6 -6
  273. package/test/maxRequestsPerSocket.test.js +2 -5
  274. package/test/method-missing.test.js +24 -0
  275. package/test/plugin.1.test.js +2 -4
  276. package/test/plugin.2.test.js +0 -2
  277. package/test/plugin.3.test.js +0 -2
  278. package/test/plugin.4.test.js +92 -56
  279. package/test/register.test.js +2 -4
  280. package/test/reply-earlyHints.test.js +98 -0
  281. package/test/reply-error.test.js +0 -2
  282. package/test/route-hooks.test.js +0 -1
  283. package/test/route-shorthand.test.js +60 -0
  284. package/test/schema-special-usage.test.js +1 -1
  285. package/test/server.test.js +17 -2
  286. package/test/stream.2.test.js +1 -1
  287. package/test/stream.4.test.js +0 -42
  288. package/test/stream.5.test.js +2 -2
  289. package/test/trust-proxy.test.js +33 -27
  290. package/test/types/errors.test-d.ts +0 -2
  291. package/test/types/fastify.test-d.ts +14 -12
  292. package/test/types/hooks.test-d.ts +1 -0
  293. package/test/types/import.ts +1 -0
  294. package/test/types/instance.test-d.ts +10 -51
  295. package/test/types/logger.test-d.ts +43 -6
  296. package/test/types/plugin.test-d.ts +5 -2
  297. package/test/types/register.test-d.ts +2 -2
  298. package/test/types/reply.test-d.ts +13 -12
  299. package/test/types/request.test-d.ts +19 -8
  300. package/test/types/route.test-d.ts +30 -2
  301. package/test/types/schema.test-d.ts +2 -2
  302. package/test/types/serverFactory.test-d.ts +1 -1
  303. package/test/types/type-provider.test-d.ts +60 -13
  304. package/test/types/using.test-d.ts +4 -1
  305. package/test/url-rewriting.test.js +3 -2
  306. package/test/useSemicolonDelimiter.test.js +3 -6
  307. package/test/versioned-routes.test.js +1 -1
  308. package/test/web-api.test.js +0 -6
  309. package/types/content-type-parser.d.ts +3 -3
  310. package/types/context.d.ts +0 -1
  311. package/types/errors.d.ts +1 -0
  312. package/types/hooks.d.ts +6 -6
  313. package/types/instance.d.ts +28 -41
  314. package/types/logger.d.ts +3 -3
  315. package/types/plugin.d.ts +3 -3
  316. package/types/reply.d.ts +13 -14
  317. package/types/request.d.ts +5 -3
  318. package/types/route.d.ts +29 -29
  319. package/types/schema.d.ts +3 -3
  320. package/types/serverFactory.d.ts +2 -2
  321. package/types/type-provider.d.ts +22 -12
  322. package/types/utils.d.ts +18 -18
  323. package/.c8rc.json +0 -8
  324. package/.eslintrc +0 -4
  325. package/test/default-route.test.js +0 -88
  326. package/test/listen.deprecated.test.js +0 -229
  327. package/test/unsupported-httpversion.test.js +0 -31
  328. package/types/.eslintrc.json +0 -48
@@ -10,8 +10,8 @@
10
10
  * node examples/typescript-server.js
11
11
  */
12
12
 
13
- import fastify, { FastifyInstance, RouteShorthandOptions } from '../fastify';
14
- import { Server, IncomingMessage, ServerResponse } from 'http';
13
+ import fastify, { FastifyInstance, RouteShorthandOptions } from '../fastify'
14
+ import { Server, IncomingMessage, ServerResponse } from 'http'
15
15
 
16
16
  // Create an http server. We pass the relevant typings for our http version used.
17
17
  // By passing types we get correctly typed access to the underlying http objects in routes.
@@ -20,7 +20,7 @@ const server: FastifyInstance<
20
20
  Server,
21
21
  IncomingMessage,
22
22
  ServerResponse
23
- > = fastify({ logger: true });
23
+ > = fastify({ logger: true })
24
24
 
25
25
  // Define interfaces for our request. We can create these automatically
26
26
  // off our JSON Schema files (See TypeScript.md) but for the purpose of this
@@ -53,7 +53,7 @@ const opts: RouteShorthandOptions = {
53
53
  }
54
54
  }
55
55
  }
56
- };
56
+ }
57
57
 
58
58
  // Add our route handler with correct types
59
59
  server.post<{
@@ -62,18 +62,18 @@ server.post<{
62
62
  Headers: PingHeaders;
63
63
  Body: PingBody;
64
64
  }>('/ping/:bar', opts, (request, reply) => {
65
- console.log(request.query); // this is of type `PingQuerystring`
66
- console.log(request.params); // this is of type `PingParams`
67
- console.log(request.headers); // this is of type `PingHeaders`
68
- console.log(request.body); // this is of type `PingBody`
69
- reply.code(200).send({ pong: 'it worked!' });
70
- });
65
+ console.log(request.query) // this is of type `PingQuerystring`
66
+ console.log(request.params) // this is of type `PingParams`
67
+ console.log(request.headers) // this is of type `PingHeaders`
68
+ console.log(request.body) // this is of type `PingBody`
69
+ reply.code(200).send({ pong: 'it worked!' })
70
+ })
71
71
 
72
72
  // Start your server
73
73
  server.listen({ port: 8080 }, (err, address) => {
74
74
  if (err) {
75
- console.error(err);
76
- process.exit(1);
75
+ console.error(err)
76
+ process.exit(1)
77
77
  }
78
- console.log(`server listening on ${address}`)
79
- });
78
+ console.log(`server listening on ${address}`)
79
+ })
package/fastify.d.ts CHANGED
@@ -22,7 +22,7 @@ import { FastifyRequest, RequestGenericInterface } from './types/request'
22
22
  import { RouteHandler, RouteHandlerMethod, RouteOptions, RouteShorthandMethod, RouteShorthandOptions, RouteShorthandOptionsWithHandler, RouteGenericInterface } from './types/route'
23
23
  import { FastifySchema, FastifySchemaCompiler, FastifySchemaValidationError, SchemaErrorDataVar, SchemaErrorFormatter } from './types/schema'
24
24
  import { FastifyServerFactory, FastifyServerFactoryHandler } from './types/serverFactory'
25
- import { FastifyTypeProvider, FastifyTypeProviderDefault } from './types/type-provider'
25
+ import { FastifyTypeProvider, FastifyTypeProviderDefault, SafePromiseLike } from './types/type-provider'
26
26
  import { HTTPMethods, RawServerBase, RawRequestDefaultExpression, RawReplyDefaultExpression, RawServerDefault, ContextConfigDefault, RequestBodyDefault, RequestQuerystringDefault, RequestParamsDefault, RequestHeadersDefault } from './types/utils'
27
27
 
28
28
  declare module '@fastify/error' {
@@ -35,7 +35,7 @@ declare module '@fastify/error' {
35
35
  type Fastify = typeof fastify
36
36
 
37
37
  declare namespace fastify {
38
- export const errorCodes: FastifyErrorCodes;
38
+ export const errorCodes: FastifyErrorCodes
39
39
 
40
40
  export type FastifyHttp2SecureOptions<
41
41
  Server extends http2.Http2SecureServer,
@@ -102,7 +102,8 @@ declare namespace fastify {
102
102
  exposeHeadRoutes?: boolean,
103
103
  onProtoPoisoning?: ProtoAction,
104
104
  onConstructorPoisoning?: ConstructorAction,
105
- logger?: boolean | FastifyLoggerOptions<RawServer> & PinoLoggerOptions | Logger,
105
+ logger?: boolean | FastifyLoggerOptions<RawServer> & PinoLoggerOptions,
106
+ loggerInstance?: Logger
106
107
  serializerOpts?: FJSOptions | Record<string, unknown>,
107
108
  serverFactory?: FastifyServerFactory<RawServer>,
108
109
  caseSensitive?: boolean,
@@ -166,7 +167,7 @@ declare namespace fastify {
166
167
  /**
167
168
  * @deprecated use {@link FastifySchemaValidationError}
168
169
  */
169
- export type ValidationResult = FastifySchemaValidationError;
170
+ export type ValidationResult = FastifySchemaValidationError
170
171
 
171
172
  /* Export additional types */
172
173
  export type {
@@ -185,8 +186,8 @@ declare namespace fastify {
185
186
  HTTPMethods, RawServerBase, RawRequestDefaultExpression, RawReplyDefaultExpression, RawServerDefault, ContextConfigDefault, RequestBodyDefault, RequestQuerystringDefault, RequestParamsDefault, RequestHeadersDefault, // './types/utils'
186
187
  DoneFuncWithErrOrRes, HookHandlerDoneFunction, RequestPayload, onCloseAsyncHookHandler, onCloseHookHandler, onErrorAsyncHookHandler, onErrorHookHandler, onReadyAsyncHookHandler, onReadyHookHandler, onListenAsyncHookHandler, onListenHookHandler, onRegisterHookHandler, onRequestAsyncHookHandler, onRequestHookHandler, onResponseAsyncHookHandler, onResponseHookHandler, onRouteHookHandler, onSendAsyncHookHandler, onSendHookHandler, onTimeoutAsyncHookHandler, onTimeoutHookHandler, preHandlerAsyncHookHandler, preHandlerHookHandler, preParsingAsyncHookHandler, preParsingHookHandler, preSerializationAsyncHookHandler, preSerializationHookHandler, preValidationAsyncHookHandler, preValidationHookHandler, onRequestAbortHookHandler, onRequestAbortAsyncHookHandler, preCloseAsyncHookHandler, preCloseHookHandler, // './types/hooks'
187
188
  FastifyServerFactory, FastifyServerFactoryHandler, // './types/serverFactory'
188
- FastifyTypeProvider, FastifyTypeProviderDefault, // './types/type-provider'
189
- FastifyErrorCodes, // './types/errors'
189
+ FastifyTypeProvider, FastifyTypeProviderDefault, SafePromiseLike, // './types/type-provider'
190
+ FastifyErrorCodes // './types/errors'
190
191
  }
191
192
  // named export
192
193
  // import { plugin } from 'plugin'
@@ -210,32 +211,32 @@ declare function fastify<
210
211
  Request extends RawRequestDefaultExpression<Server> = RawRequestDefaultExpression<Server>,
211
212
  Reply extends RawReplyDefaultExpression<Server> = RawReplyDefaultExpression<Server>,
212
213
  Logger extends FastifyBaseLogger = FastifyBaseLogger,
213
- TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,
214
- >(opts: fastify.FastifyHttp2SecureOptions<Server, Logger>): FastifyInstance<Server, Request, Reply, Logger, TypeProvider> & PromiseLike<FastifyInstance<Server, Request, Reply, Logger, TypeProvider>>
214
+ TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault
215
+ > (opts: fastify.FastifyHttp2SecureOptions<Server, Logger>): FastifyInstance<Server, Request, Reply, Logger, TypeProvider> & SafePromiseLike<FastifyInstance<Server, Request, Reply, Logger, TypeProvider>>
215
216
 
216
217
  declare function fastify<
217
218
  Server extends http2.Http2Server,
218
219
  Request extends RawRequestDefaultExpression<Server> = RawRequestDefaultExpression<Server>,
219
220
  Reply extends RawReplyDefaultExpression<Server> = RawReplyDefaultExpression<Server>,
220
221
  Logger extends FastifyBaseLogger = FastifyBaseLogger,
221
- TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,
222
- >(opts: fastify.FastifyHttp2Options<Server, Logger>): FastifyInstance<Server, Request, Reply, Logger, TypeProvider> & PromiseLike<FastifyInstance<Server, Request, Reply, Logger, TypeProvider>>
222
+ TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault
223
+ > (opts: fastify.FastifyHttp2Options<Server, Logger>): FastifyInstance<Server, Request, Reply, Logger, TypeProvider> & SafePromiseLike<FastifyInstance<Server, Request, Reply, Logger, TypeProvider>>
223
224
 
224
225
  declare function fastify<
225
226
  Server extends https.Server,
226
227
  Request extends RawRequestDefaultExpression<Server> = RawRequestDefaultExpression<Server>,
227
228
  Reply extends RawReplyDefaultExpression<Server> = RawReplyDefaultExpression<Server>,
228
229
  Logger extends FastifyBaseLogger = FastifyBaseLogger,
229
- TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,
230
- >(opts: fastify.FastifyHttpsOptions<Server, Logger>): FastifyInstance<Server, Request, Reply, Logger, TypeProvider> & PromiseLike<FastifyInstance<Server, Request, Reply, Logger, TypeProvider>>
230
+ TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault
231
+ > (opts: fastify.FastifyHttpsOptions<Server, Logger>): FastifyInstance<Server, Request, Reply, Logger, TypeProvider> & SafePromiseLike<FastifyInstance<Server, Request, Reply, Logger, TypeProvider>>
231
232
 
232
233
  declare function fastify<
233
234
  Server extends http.Server,
234
235
  Request extends RawRequestDefaultExpression<Server> = RawRequestDefaultExpression<Server>,
235
236
  Reply extends RawReplyDefaultExpression<Server> = RawReplyDefaultExpression<Server>,
236
237
  Logger extends FastifyBaseLogger = FastifyBaseLogger,
237
- TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,
238
- >(opts?: fastify.FastifyHttpOptions<Server, Logger>): FastifyInstance<Server, Request, Reply, Logger, TypeProvider> & PromiseLike<FastifyInstance<Server, Request, Reply, Logger, TypeProvider>>
238
+ TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault
239
+ > (opts?: fastify.FastifyHttpOptions<Server, Logger>): FastifyInstance<Server, Request, Reply, Logger, TypeProvider> & SafePromiseLike<FastifyInstance<Server, Request, Reply, Logger, TypeProvider>>
239
240
 
240
241
  // CJS export
241
242
  // const fastify = require('fastify')
package/fastify.js CHANGED
@@ -1,9 +1,10 @@
1
1
  'use strict'
2
2
 
3
- const VERSION = '4.27.0'
3
+ const VERSION = '5.0.0-alpha.2'
4
4
 
5
5
  const Avvio = require('avvio')
6
6
  const http = require('node:http')
7
+ const diagnostics = require('dc-polyfill')
7
8
  let lightMyRequest
8
9
 
9
10
  const {
@@ -32,7 +33,7 @@ const {
32
33
  kGenReqId
33
34
  } = require('./lib/symbols.js')
34
35
 
35
- const { createServer, compileValidateHTTPVersion } = require('./lib/server')
36
+ const { createServer } = require('./lib/server')
36
37
  const Reply = require('./lib/reply')
37
38
  const Request = require('./lib/request')
38
39
  const Context = require('./lib/context.js')
@@ -77,6 +78,8 @@ const {
77
78
 
78
79
  const { buildErrorHandler } = require('./lib/error-handler.js')
79
80
 
81
+ const initChannel = diagnostics.channel('fastify.initialization')
82
+
80
83
  function defaultBuildPrettyMeta (route) {
81
84
  // return a shallow copy of route's sanitized context
82
85
 
@@ -111,7 +114,7 @@ function fastify (options) {
111
114
 
112
115
  validateBodyLimitOption(options.bodyLimit)
113
116
 
114
- const requestIdHeader = (options.requestIdHeader === false) ? false : (options.requestIdHeader || defaultInitOptions.requestIdHeader).toLowerCase()
117
+ const requestIdHeader = typeof options.requestIdHeader === 'string' && options.requestIdHeader.length !== 0 ? options.requestIdHeader.toLowerCase() : (options.requestIdHeader === true && 'request-id')
115
118
  const genReqId = reqIdGenFactory(requestIdHeader, options.genReqId)
116
119
  const requestIdLogLabel = options.requestIdLogLabel || 'reqId'
117
120
  const bodyLimit = options.bodyLimit || defaultInitOptions.bodyLimit
@@ -252,8 +255,6 @@ function fastify (options) {
252
255
  [kGenReqId]: genReqId,
253
256
  // routing method
254
257
  routing: httpHandler,
255
- getDefaultRoute: router.getDefaultRoute.bind(router),
256
- setDefaultRoute: router.setDefaultRoute.bind(router),
257
258
  // routes shorthand methods
258
259
  delete: function _delete (url, options, handler) {
259
260
  return router.prepareRoute.call(this, { method: 'DELETE', url, options, handler })
@@ -276,6 +277,39 @@ function fastify (options) {
276
277
  options: function _options (url, options, handler) {
277
278
  return router.prepareRoute.call(this, { method: 'OPTIONS', url, options, handler })
278
279
  },
280
+ propfind: function _propfind (url, options, handler) {
281
+ return router.prepareRoute.call(this, { method: 'PROPFIND', url, options, handler })
282
+ },
283
+ proppatch: function _proppatch (url, options, handler) {
284
+ return router.prepareRoute.call(this, { method: 'PROPPATCH', url, options, handler })
285
+ },
286
+ mkcalendar: function _mkcalendar (url, options, handler) {
287
+ return router.prepareRoute.call(this, { method: 'MKCALENDAR', url, options, handler })
288
+ },
289
+ mkcol: function _mkcol (url, options, handler) {
290
+ return router.prepareRoute.call(this, { method: 'MKCOL', url, options, handler })
291
+ },
292
+ copy: function _copy (url, options, handler) {
293
+ return router.prepareRoute.call(this, { method: 'COPY', url, options, handler })
294
+ },
295
+ move: function _move (url, options, handler) {
296
+ return router.prepareRoute.call(this, { method: 'MOVE', url, options, handler })
297
+ },
298
+ lock: function _lock (url, options, handler) {
299
+ return router.prepareRoute.call(this, { method: 'LOCK', url, options, handler })
300
+ },
301
+ unlock: function _unlock (url, options, handler) {
302
+ return router.prepareRoute.call(this, { method: 'UNLOCK', url, options, handler })
303
+ },
304
+ trace: function _trace (url, options, handler) {
305
+ return router.prepareRoute.call(this, { method: 'TRACE', url, options, handler })
306
+ },
307
+ report: function _mkcalendar (url, options, handler) {
308
+ return router.prepareRoute.call(this, { method: 'REPORT', url, options, handler })
309
+ },
310
+ search: function _search (url, options, handler) {
311
+ return router.prepareRoute.call(this, { method: 'SEARCH', url, options, handler })
312
+ },
279
313
  all: function _all (url, options, handler) {
280
314
  return router.prepareRoute.call(this, { method: supportedMethods, url, options, handler })
281
315
  },
@@ -503,22 +537,14 @@ function fastify (options) {
503
537
  hasLogger,
504
538
  setupResponseListeners,
505
539
  throwIfAlreadyStarted,
506
- validateHTTPVersion: compileValidateHTTPVersion(options),
507
540
  keepAliveConnections
508
541
  })
509
542
 
510
543
  // Delay configuring clientError handler so that it can access fastify state.
511
544
  server.on('clientError', options.clientErrorHandler.bind(fastify))
512
545
 
513
- try {
514
- const dc = require('node:diagnostics_channel')
515
- const initChannel = dc.channel('fastify.initialization')
516
- if (initChannel.hasSubscribers) {
517
- initChannel.publish({ fastify })
518
- }
519
- } catch (e) {
520
- // This only happens if `diagnostics_channel` isn't available, i.e. earlier
521
- // versions of Node.js. In that event, we don't care, so ignore the error.
546
+ if (initChannel.hasSubscribers) {
547
+ initChannel.publish({ fastify })
522
548
  }
523
549
 
524
550
  // Older nodejs versions may not have asyncDispose
@@ -1,9 +1,9 @@
1
1
  // This file is autogenerated by build/build-validation.js, do not edit
2
- /* istanbul ignore file */
2
+ /* c8 ignore start */
3
3
  "use strict";
4
4
  module.exports = validate10;
5
5
  module.exports.default = validate10;
6
- const schema11 = {"type":"object","additionalProperties":false,"properties":{"connectionTimeout":{"type":"integer","default":0},"keepAliveTimeout":{"type":"integer","default":72000},"forceCloseConnections":{"oneOf":[{"type":"string","pattern":"idle"},{"type":"boolean"}]},"maxRequestsPerSocket":{"type":"integer","default":0,"nullable":true},"requestTimeout":{"type":"integer","default":0},"bodyLimit":{"type":"integer","default":1048576},"caseSensitive":{"type":"boolean","default":true},"allowUnsafeRegex":{"type":"boolean","default":false},"http2":{"type":"boolean"},"https":{"if":{"not":{"oneOf":[{"type":"boolean"},{"type":"null"},{"type":"object","additionalProperties":false,"required":["allowHTTP1"],"properties":{"allowHTTP1":{"type":"boolean"}}}]}},"then":{"setDefaultValue":true}},"ignoreTrailingSlash":{"type":"boolean","default":false},"ignoreDuplicateSlashes":{"type":"boolean","default":false},"disableRequestLogging":{"type":"boolean","default":false},"jsonShorthand":{"type":"boolean","default":true},"maxParamLength":{"type":"integer","default":100},"onProtoPoisoning":{"type":"string","default":"error"},"onConstructorPoisoning":{"type":"string","default":"error"},"pluginTimeout":{"type":"integer","default":10000},"requestIdHeader":{"anyOf":[{"enum":[false]},{"type":"string"}],"default":"request-id"},"requestIdLogLabel":{"type":"string","default":"reqId"},"http2SessionTimeout":{"type":"integer","default":72000},"exposeHeadRoutes":{"type":"boolean","default":true},"useSemicolonDelimiter":{"type":"boolean","default":true},"versioning":{"type":"object","additionalProperties":true,"required":["storage","deriveVersion"],"properties":{"storage":{},"deriveVersion":{}}},"constraints":{"type":"object","additionalProperties":{"type":"object","required":["name","storage","validate","deriveConstraint"],"additionalProperties":true,"properties":{"name":{"type":"string"},"storage":{},"validate":{},"deriveConstraint":{}}}}}};
6
+ const schema11 = {"type":"object","additionalProperties":false,"properties":{"connectionTimeout":{"type":"integer","default":0},"keepAliveTimeout":{"type":"integer","default":72000},"forceCloseConnections":{"oneOf":[{"type":"string","pattern":"idle"},{"type":"boolean"}]},"maxRequestsPerSocket":{"type":"integer","default":0,"nullable":true},"requestTimeout":{"type":"integer","default":0},"bodyLimit":{"type":"integer","default":1048576},"caseSensitive":{"type":"boolean","default":true},"allowUnsafeRegex":{"type":"boolean","default":false},"http2":{"type":"boolean"},"https":{"if":{"not":{"oneOf":[{"type":"boolean"},{"type":"null"},{"type":"object","additionalProperties":false,"required":["allowHTTP1"],"properties":{"allowHTTP1":{"type":"boolean"}}}]}},"then":{"setDefaultValue":true}},"ignoreTrailingSlash":{"type":"boolean","default":false},"ignoreDuplicateSlashes":{"type":"boolean","default":false},"disableRequestLogging":{"type":"boolean","default":false},"jsonShorthand":{"type":"boolean","default":true},"maxParamLength":{"type":"integer","default":100},"onProtoPoisoning":{"type":"string","default":"error"},"onConstructorPoisoning":{"type":"string","default":"error"},"pluginTimeout":{"type":"integer","default":10000},"requestIdHeader":{"anyOf":[{"type":"boolean"},{"type":"string"}],"default":false},"requestIdLogLabel":{"type":"string","default":"reqId"},"http2SessionTimeout":{"type":"integer","default":72000},"exposeHeadRoutes":{"type":"boolean","default":true},"useSemicolonDelimiter":{"type":"boolean","default":false},"versioning":{"type":"object","additionalProperties":true,"required":["storage","deriveVersion"],"properties":{"storage":{},"deriveVersion":{}}},"constraints":{"type":"object","additionalProperties":{"type":"object","required":["name","storage","validate","deriveConstraint"],"additionalProperties":true,"properties":{"name":{"type":"string"},"storage":{},"validate":{},"deriveConstraint":{}}}}}};
7
7
  const func2 = Object.prototype.hasOwnProperty;
8
8
  const pattern0 = new RegExp("idle", "u");
9
9
 
@@ -58,7 +58,7 @@ if(data.pluginTimeout === undefined){
58
58
  data.pluginTimeout = 10000;
59
59
  }
60
60
  if(data.requestIdHeader === undefined){
61
- data.requestIdHeader = "request-id";
61
+ data.requestIdHeader = false;
62
62
  }
63
63
  if(data.requestIdLogLabel === undefined){
64
64
  data.requestIdLogLabel = "reqId";
@@ -70,7 +70,7 @@ if(data.exposeHeadRoutes === undefined){
70
70
  data.exposeHeadRoutes = true;
71
71
  }
72
72
  if(data.useSemicolonDelimiter === undefined){
73
- data.useSemicolonDelimiter = true;
73
+ data.useSemicolonDelimiter = false;
74
74
  }
75
75
  const _errs1 = errors;
76
76
  for(const key0 in data){
@@ -843,8 +843,17 @@ const _errs57 = errors;
843
843
  const _errs58 = errors;
844
844
  let valid6 = false;
845
845
  const _errs59 = errors;
846
- if(!(data19 === false)){
847
- const err12 = {instancePath:instancePath+"/requestIdHeader",schemaPath:"#/properties/requestIdHeader/anyOf/0/enum",keyword:"enum",params:{allowedValues: schema11.properties.requestIdHeader.anyOf[0].enum},message:"must be equal to one of the allowed values"};
846
+ if(typeof data19 !== "boolean"){
847
+ let coerced21 = undefined;
848
+ if(!(coerced21 !== undefined)){
849
+ if(data19 === "false" || data19 === 0 || data19 === null){
850
+ coerced21 = false;
851
+ }
852
+ else if(data19 === "true" || data19 === 1){
853
+ coerced21 = true;
854
+ }
855
+ else {
856
+ const err12 = {instancePath:instancePath+"/requestIdHeader",schemaPath:"#/properties/requestIdHeader/anyOf/0/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"};
848
857
  if(vErrors === null){
849
858
  vErrors = [err12];
850
859
  }
@@ -853,19 +862,27 @@ vErrors.push(err12);
853
862
  }
854
863
  errors++;
855
864
  }
865
+ }
866
+ if(coerced21 !== undefined){
867
+ data19 = coerced21;
868
+ if(data !== undefined){
869
+ data["requestIdHeader"] = coerced21;
870
+ }
871
+ }
872
+ }
856
873
  var _valid3 = _errs59 === errors;
857
874
  valid6 = valid6 || _valid3;
858
875
  if(!valid6){
859
- const _errs60 = errors;
876
+ const _errs61 = errors;
860
877
  if(typeof data19 !== "string"){
861
- let dataType21 = typeof data19;
862
- let coerced21 = undefined;
863
- if(!(coerced21 !== undefined)){
864
- if(dataType21 == "number" || dataType21 == "boolean"){
865
- coerced21 = "" + data19;
878
+ let dataType22 = typeof data19;
879
+ let coerced22 = undefined;
880
+ if(!(coerced22 !== undefined)){
881
+ if(dataType22 == "number" || dataType22 == "boolean"){
882
+ coerced22 = "" + data19;
866
883
  }
867
884
  else if(data19 === null){
868
- coerced21 = "";
885
+ coerced22 = "";
869
886
  }
870
887
  else {
871
888
  const err13 = {instancePath:instancePath+"/requestIdHeader",schemaPath:"#/properties/requestIdHeader/anyOf/1/type",keyword:"type",params:{type: "string"},message:"must be string"};
@@ -878,14 +895,14 @@ vErrors.push(err13);
878
895
  errors++;
879
896
  }
880
897
  }
881
- if(coerced21 !== undefined){
882
- data19 = coerced21;
898
+ if(coerced22 !== undefined){
899
+ data19 = coerced22;
883
900
  if(data !== undefined){
884
- data["requestIdHeader"] = coerced21;
901
+ data["requestIdHeader"] = coerced22;
885
902
  }
886
903
  }
887
904
  }
888
- var _valid3 = _errs60 === errors;
905
+ var _valid3 = _errs61 === errors;
889
906
  valid6 = valid6 || _valid3;
890
907
  }
891
908
  if(!valid6){
@@ -914,109 +931,109 @@ vErrors = null;
914
931
  var valid0 = _errs57 === errors;
915
932
  if(valid0){
916
933
  let data20 = data.requestIdLogLabel;
917
- const _errs62 = errors;
934
+ const _errs63 = errors;
918
935
  if(typeof data20 !== "string"){
919
- let dataType22 = typeof data20;
920
- let coerced22 = undefined;
921
- if(!(coerced22 !== undefined)){
922
- if(dataType22 == "number" || dataType22 == "boolean"){
923
- coerced22 = "" + data20;
936
+ let dataType23 = typeof data20;
937
+ let coerced23 = undefined;
938
+ if(!(coerced23 !== undefined)){
939
+ if(dataType23 == "number" || dataType23 == "boolean"){
940
+ coerced23 = "" + data20;
924
941
  }
925
942
  else if(data20 === null){
926
- coerced22 = "";
943
+ coerced23 = "";
927
944
  }
928
945
  else {
929
946
  validate10.errors = [{instancePath:instancePath+"/requestIdLogLabel",schemaPath:"#/properties/requestIdLogLabel/type",keyword:"type",params:{type: "string"},message:"must be string"}];
930
947
  return false;
931
948
  }
932
949
  }
933
- if(coerced22 !== undefined){
934
- data20 = coerced22;
950
+ if(coerced23 !== undefined){
951
+ data20 = coerced23;
935
952
  if(data !== undefined){
936
- data["requestIdLogLabel"] = coerced22;
953
+ data["requestIdLogLabel"] = coerced23;
937
954
  }
938
955
  }
939
956
  }
940
- var valid0 = _errs62 === errors;
957
+ var valid0 = _errs63 === errors;
941
958
  if(valid0){
942
959
  let data21 = data.http2SessionTimeout;
943
- const _errs64 = errors;
960
+ const _errs65 = errors;
944
961
  if(!(((typeof data21 == "number") && (!(data21 % 1) && !isNaN(data21))) && (isFinite(data21)))){
945
- let dataType23 = typeof data21;
946
- let coerced23 = undefined;
947
- if(!(coerced23 !== undefined)){
948
- if(dataType23 === "boolean" || data21 === null
949
- || (dataType23 === "string" && data21 && data21 == +data21 && !(data21 % 1))){
950
- coerced23 = +data21;
962
+ let dataType24 = typeof data21;
963
+ let coerced24 = undefined;
964
+ if(!(coerced24 !== undefined)){
965
+ if(dataType24 === "boolean" || data21 === null
966
+ || (dataType24 === "string" && data21 && data21 == +data21 && !(data21 % 1))){
967
+ coerced24 = +data21;
951
968
  }
952
969
  else {
953
970
  validate10.errors = [{instancePath:instancePath+"/http2SessionTimeout",schemaPath:"#/properties/http2SessionTimeout/type",keyword:"type",params:{type: "integer"},message:"must be integer"}];
954
971
  return false;
955
972
  }
956
973
  }
957
- if(coerced23 !== undefined){
958
- data21 = coerced23;
974
+ if(coerced24 !== undefined){
975
+ data21 = coerced24;
959
976
  if(data !== undefined){
960
- data["http2SessionTimeout"] = coerced23;
977
+ data["http2SessionTimeout"] = coerced24;
961
978
  }
962
979
  }
963
980
  }
964
- var valid0 = _errs64 === errors;
981
+ var valid0 = _errs65 === errors;
965
982
  if(valid0){
966
983
  let data22 = data.exposeHeadRoutes;
967
- const _errs66 = errors;
984
+ const _errs67 = errors;
968
985
  if(typeof data22 !== "boolean"){
969
- let coerced24 = undefined;
970
- if(!(coerced24 !== undefined)){
986
+ let coerced25 = undefined;
987
+ if(!(coerced25 !== undefined)){
971
988
  if(data22 === "false" || data22 === 0 || data22 === null){
972
- coerced24 = false;
989
+ coerced25 = false;
973
990
  }
974
991
  else if(data22 === "true" || data22 === 1){
975
- coerced24 = true;
992
+ coerced25 = true;
976
993
  }
977
994
  else {
978
995
  validate10.errors = [{instancePath:instancePath+"/exposeHeadRoutes",schemaPath:"#/properties/exposeHeadRoutes/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];
979
996
  return false;
980
997
  }
981
998
  }
982
- if(coerced24 !== undefined){
983
- data22 = coerced24;
999
+ if(coerced25 !== undefined){
1000
+ data22 = coerced25;
984
1001
  if(data !== undefined){
985
- data["exposeHeadRoutes"] = coerced24;
1002
+ data["exposeHeadRoutes"] = coerced25;
986
1003
  }
987
1004
  }
988
1005
  }
989
- var valid0 = _errs66 === errors;
1006
+ var valid0 = _errs67 === errors;
990
1007
  if(valid0){
991
1008
  let data23 = data.useSemicolonDelimiter;
992
- const _errs68 = errors;
1009
+ const _errs69 = errors;
993
1010
  if(typeof data23 !== "boolean"){
994
- let coerced25 = undefined;
995
- if(!(coerced25 !== undefined)){
1011
+ let coerced26 = undefined;
1012
+ if(!(coerced26 !== undefined)){
996
1013
  if(data23 === "false" || data23 === 0 || data23 === null){
997
- coerced25 = false;
1014
+ coerced26 = false;
998
1015
  }
999
1016
  else if(data23 === "true" || data23 === 1){
1000
- coerced25 = true;
1017
+ coerced26 = true;
1001
1018
  }
1002
1019
  else {
1003
1020
  validate10.errors = [{instancePath:instancePath+"/useSemicolonDelimiter",schemaPath:"#/properties/useSemicolonDelimiter/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];
1004
1021
  return false;
1005
1022
  }
1006
1023
  }
1007
- if(coerced25 !== undefined){
1008
- data23 = coerced25;
1024
+ if(coerced26 !== undefined){
1025
+ data23 = coerced26;
1009
1026
  if(data !== undefined){
1010
- data["useSemicolonDelimiter"] = coerced25;
1027
+ data["useSemicolonDelimiter"] = coerced26;
1011
1028
  }
1012
1029
  }
1013
1030
  }
1014
- var valid0 = _errs68 === errors;
1031
+ var valid0 = _errs69 === errors;
1015
1032
  if(valid0){
1016
1033
  if(data.versioning !== undefined){
1017
1034
  let data24 = data.versioning;
1018
- const _errs70 = errors;
1019
- if(errors === _errs70){
1035
+ const _errs71 = errors;
1036
+ if(errors === _errs71){
1020
1037
  if(data24 && typeof data24 == "object" && !Array.isArray(data24)){
1021
1038
  let missing1;
1022
1039
  if(((data24.storage === undefined) && (missing1 = "storage")) || ((data24.deriveVersion === undefined) && (missing1 = "deriveVersion"))){
@@ -1029,7 +1046,7 @@ validate10.errors = [{instancePath:instancePath+"/versioning",schemaPath:"#/prop
1029
1046
  return false;
1030
1047
  }
1031
1048
  }
1032
- var valid0 = _errs70 === errors;
1049
+ var valid0 = _errs71 === errors;
1033
1050
  }
1034
1051
  else {
1035
1052
  var valid0 = true;
@@ -1037,13 +1054,13 @@ var valid0 = true;
1037
1054
  if(valid0){
1038
1055
  if(data.constraints !== undefined){
1039
1056
  let data25 = data.constraints;
1040
- const _errs73 = errors;
1041
- if(errors === _errs73){
1057
+ const _errs74 = errors;
1058
+ if(errors === _errs74){
1042
1059
  if(data25 && typeof data25 == "object" && !Array.isArray(data25)){
1043
1060
  for(const key2 in data25){
1044
1061
  let data26 = data25[key2];
1045
- const _errs76 = errors;
1046
- if(errors === _errs76){
1062
+ const _errs77 = errors;
1063
+ if(errors === _errs77){
1047
1064
  if(data26 && typeof data26 == "object" && !Array.isArray(data26)){
1048
1065
  let missing2;
1049
1066
  if(((((data26.name === undefined) && (missing2 = "name")) || ((data26.storage === undefined) && (missing2 = "storage"))) || ((data26.validate === undefined) && (missing2 = "validate"))) || ((data26.deriveConstraint === undefined) && (missing2 = "deriveConstraint"))){
@@ -1054,24 +1071,24 @@ else {
1054
1071
  if(data26.name !== undefined){
1055
1072
  let data27 = data26.name;
1056
1073
  if(typeof data27 !== "string"){
1057
- let dataType26 = typeof data27;
1058
- let coerced26 = undefined;
1059
- if(!(coerced26 !== undefined)){
1060
- if(dataType26 == "number" || dataType26 == "boolean"){
1061
- coerced26 = "" + data27;
1074
+ let dataType27 = typeof data27;
1075
+ let coerced27 = undefined;
1076
+ if(!(coerced27 !== undefined)){
1077
+ if(dataType27 == "number" || dataType27 == "boolean"){
1078
+ coerced27 = "" + data27;
1062
1079
  }
1063
1080
  else if(data27 === null){
1064
- coerced26 = "";
1081
+ coerced27 = "";
1065
1082
  }
1066
1083
  else {
1067
1084
  validate10.errors = [{instancePath:instancePath+"/constraints/" + key2.replace(/~/g, "~0").replace(/\//g, "~1")+"/name",schemaPath:"#/properties/constraints/additionalProperties/properties/name/type",keyword:"type",params:{type: "string"},message:"must be string"}];
1068
1085
  return false;
1069
1086
  }
1070
1087
  }
1071
- if(coerced26 !== undefined){
1072
- data27 = coerced26;
1088
+ if(coerced27 !== undefined){
1089
+ data27 = coerced27;
1073
1090
  if(data26 !== undefined){
1074
- data26["name"] = coerced26;
1091
+ data26["name"] = coerced27;
1075
1092
  }
1076
1093
  }
1077
1094
  }
@@ -1083,7 +1100,7 @@ validate10.errors = [{instancePath:instancePath+"/constraints/" + key2.replace(/
1083
1100
  return false;
1084
1101
  }
1085
1102
  }
1086
- var valid7 = _errs76 === errors;
1103
+ var valid7 = _errs77 === errors;
1087
1104
  if(!valid7){
1088
1105
  break;
1089
1106
  }
@@ -1094,7 +1111,7 @@ validate10.errors = [{instancePath:instancePath+"/constraints",schemaPath:"#/pro
1094
1111
  return false;
1095
1112
  }
1096
1113
  }
1097
- var valid0 = _errs73 === errors;
1114
+ var valid0 = _errs74 === errors;
1098
1115
  }
1099
1116
  else {
1100
1117
  var valid0 = true;
@@ -1135,4 +1152,5 @@ return errors === 0;
1135
1152
  }
1136
1153
 
1137
1154
 
1138
- module.exports.defaultInitOptions = {"connectionTimeout":0,"keepAliveTimeout":72000,"maxRequestsPerSocket":0,"requestTimeout":0,"bodyLimit":1048576,"caseSensitive":true,"allowUnsafeRegex":false,"disableRequestLogging":false,"jsonShorthand":true,"ignoreTrailingSlash":false,"ignoreDuplicateSlashes":false,"maxParamLength":100,"onProtoPoisoning":"error","onConstructorPoisoning":"error","pluginTimeout":10000,"requestIdHeader":"request-id","requestIdLogLabel":"reqId","http2SessionTimeout":72000,"exposeHeadRoutes":true,"useSemicolonDelimiter":true}
1155
+ module.exports.defaultInitOptions = {"connectionTimeout":0,"keepAliveTimeout":72000,"maxRequestsPerSocket":0,"requestTimeout":0,"bodyLimit":1048576,"caseSensitive":true,"allowUnsafeRegex":false,"disableRequestLogging":false,"jsonShorthand":true,"ignoreTrailingSlash":false,"ignoreDuplicateSlashes":false,"maxParamLength":100,"onProtoPoisoning":"error","onConstructorPoisoning":"error","pluginTimeout":10000,"requestIdHeader":false,"requestIdLogLabel":"reqId","http2SessionTimeout":72000,"exposeHeadRoutes":true,"useSemicolonDelimiter":false}
1156
+ /* c8 ignore stop */